1 / 16

Garbage Collection

SCJP. Garbage Collection. Garbage Collection. Garbage Collector( 이하 GC) 가 Heap 영역에 할당된 , 더 이상 사용되지 않는 메모리인 Garbage 를 다른 객체가 사용할 수 있도록 정리하는 것 . C++ 에서의 메모리 해제 int * v= new int ; delete v; int * ary = new int [10000]; delete [] ary ;. Garbage Collection 방법.

Download Presentation

Garbage Collection

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SCJP Garbage Collection

  2. Garbage Collection • Garbage Collector(이하 GC) 가 Heap 영역에 할당된, 더 이상 사용되지 않는 메모리인 Garbage를 다른 객체가 사용할 수 있도록 정리하는 것. • C++ 에서의 메모리 해제 • int* v= new int; • delete v; • int* ary= new int[10000]; • delete [] ary;

  3. Garbage Collection 방법 • 객체를 가리키는 참조 변수가 null로 지정되거나 객체를 더 이상 참조하지 않을 때gc의 후보가 된다. • gc의 후보가 된다고 해서 즉각적으로 gc가수행되는 것은 아니다. • 여유 메모리가 부족하거나 사용자의 입력을 기다리는 경우와 같이 프로그램이 활동하지 않을 경우 gc가 수행된다. • 왜? gc는 매우 복잡한 과정을 거쳐야 하므로 수시로 gc를 수행하면 프로그램 성능에 좋지 않다.

  4. Garbage Collection 특징 • Automatic memory management 라고 부르기도 함. • gc는 프로그래머에 의해 구현될 수 없다. • gc대상은 Object이지 reference가 아니다. • 할당된 메모리를 명시적으로 해제할 수 없다. • gc의 내부는 완벽이 캡슐화 되어, 그 동작을 알 수 없다. • gc가 정확히 언제 수행되는지 알 수 없다. • 다른 참조 변수가 참조하고 있다면 gc의 대상이 아니다.

  5. Garbage Collection 예제 • 1. gc대상이 되는 경우 String str= new String(“scjp”); str= null; • 참고. String str= new String(“aaa”); String str= “aaa”; 위 두 개의 수행은 같다.

  6. Q1 • Java에서 유일한 unsigned data type는? • 그 값의 범위는?

  7. Garbage Collection 예제 • 2. gc대상이 되는 경우 String str; str= new String(“scjp”); str= new String(“scjd”); • 같은 참조 변수 str에 두번의 메모리 할당이 수행되었다. 그렇다면 첫번째 할당된 메모리에 대한 gc가 수행된다.

  8. Garbage Collection 예제 • 3. gc대상이 되는 경우 public void print(){ String str= new String(“aaa”); } • print() 함수에 진입한 후 리턴 될 때,str이 reference하는 문자열 “aaa”는 더 이상의 참조가 없으므로 gc의 대상이 된다.

  9. Garbage Collection 예제 • 3. gc대상이 되지 않는 경우 public String print(){ String str= new String(“aaa”); return str; } public static void main(String args[]){ String myStr= print(); } • 앞의 경우와는 다르게 이 경우에는 gc의 대상이 되지 못한다. myStr이 reference하기 때문이다.

  10. Garbage Collection 예제 • 3. gc의 대상이 아닌 경우 • String str1= new String(“aaa”); • String str2= str1; • str1= null; • str1을 null로 할당 했다 하더라도,str2가 참조를 하고 있으므로 gc의 대상이 아니다.

  11. Q2 class Test { public Test(){ this.a= 10; b= 20; this.c= 30; } private int a; private int b; private int c; } class MainClass{ public static void main(String args[]){ Test test= new Test(); System.out.println(test); } } 다음과 같은 출력을 할 수 있도록 위 프로그램을 수정하세요. //출력결과 a= 10; b= 20 c= 30

  12. Q3 • byte, long, double, char, int, short, float다음을 묵시적 형 변환이 일어날 수 있는 순서로 나열 하라.Ex) short -> float -> …. -> ….

  13. Q4 public static void main(String args[]){ intary[]= new int[10]; try{ System.out.println(ary[num]); }catch(Exception e){ System.out.println("exception"); }finally{ System.out.println("finally"); } } • num= -1 인 경우 출력 • num= 5 인 경우 출력 • num= 10 인 경우 출력

  14. Garbage Collection class Test{ public Test(){ 파일 열기 작업을 한다. } } Test test= new Test(); 위의 프로그램은 제대로 작성되지 못한 프로그램이다. 만약 test에 null이 할달 되거나 new Test();가 더 이상 참조 되지 않는다면, 생성자에서 작업한 파일 열기 작업에 대한 파일 닫기 작업을 수행하지 않게 된다. class Test{ public Test(){ 파일 열기 작업을 한다. } public fileClose(){ 파일 닫기작업을 한다. } } Test test= new Test(); 와 같으 프로그래밍 하였더라도 test.fileClose() 함수를 호출 하지 않을 가능성이 있다.

  15. Garbage Collection class Test{ public Test(){ 파일 열기 작업을 한다. } protected void finalize() throws Throwable{ 파일 닫기 작업을 한다. } } Test test= new Test(); Java.lang.Object의 finalize 메소드를overriding 하여, 객체가 소멸 될 때 반드시 수행해야 하는 루틴을 담아 놓는다. finalize() 메소드는gc에 의해 해당 객체가 소멸될 때 호출되는 함수이다. 앞서 설명한 바와 같이 finalize 함수의 호출 시키는 java VM이 결정한다.

  16. Garbage Collection

More Related