Garbage Collector 호출하기
C++과는 다르게 자바에서 new 연산자를 통해 객체를 생성한 후 특별히 객체를 삭제하는 키워(C++의 delete)는 없습니다. 그 이유는 JVM이 더 이상 사용되지 않는 객체를 자동으로 메모리에서 삭제하는데 이렇게 사용되지 않는 객체를 처리하는 것이 Garbage Collector 입니다. 자바언어의 강점이기도 합니다.
한편 프로그래머가 명시적으로 이 Garbage Collector를 호출 할 수 있는데 System.gc()를 이용 합니다.
아래의 예문을 참고 하세요~
public class CallGarbageColletor {
public static void main(String[] args) {
byte[] test = new byte[4096];
Runtime r = Runtime.getRuntime();
System.out.println("사용 메모리 : " + (r.totalMemory() - r.freeMemory())/1024 + "K");
//객체를 명시적으로 해제
test = null;
//Garbage Colletor 호출
System.gc();
r = Runtime.getRuntime();
System.out.println("-----객체를 해제 후 -----");
System.out.println("사용 메모리 : " + (r.totalMemory() - r.freeMemory())/1024 + "K");
}
}
[결과]
사용 메모리 : 276K
-----객체를 해제 후 -----
사용 메모리 : 137K
C++과는 다르게 자바에서 new 연산자를 통해 객체를 생성한 후 특별히 객체를 삭제하는 키워(C++의 delete)는 없습니다. 그 이유는 JVM이 더 이상 사용되지 않는 객체를 자동으로 메모리에서 삭제하는데 이렇게 사용되지 않는 객체를 처리하는 것이 Garbage Collector 입니다. 자바언어의 강점이기도 합니다.
한편 프로그래머가 명시적으로 이 Garbage Collector를 호출 할 수 있는데 System.gc()를 이용 합니다.
아래의 예문을 참고 하세요~
public class CallGarbageColletor {
public static void main(String[] args) {
byte[] test = new byte[4096];
Runtime r = Runtime.getRuntime();
System.out.println("사용 메모리 : " + (r.totalMemory() - r.freeMemory())/1024 + "K");
//객체를 명시적으로 해제
test = null;
//Garbage Colletor 호출
System.gc();
r = Runtime.getRuntime();
System.out.println("-----객체를 해제 후 -----");
System.out.println("사용 메모리 : " + (r.totalMemory() - r.freeMemory())/1024 + "K");
}
}
[결과]
사용 메모리 : 276K
-----객체를 해제 후 -----
사용 메모리 : 137K
'Programming > JAVA' 카테고리의 다른 글
메모리 사용량 확인 (0) | 2008.04.28 |
---|---|
System 환경 읽어 오기 (0) | 2008.04.28 |
OutOfMemory 해결법 (0) | 2008.04.28 |
윈도우 레지스트리 내용 다루기 (0) | 2008.04.28 |
JBuilder에서 CVS 소스버전 콘트롤 (0) | 2008.04.28 |