가비지 컬렉션 명시적(finalize메소드) 호출하는 2가지 메소드, 오버라이딩 기본 원칙, finalize()오버라이딩, System.gc();, System.runFinalization();

CODEDRAGON Development/Java

반응형

   

   

가비지 컬렉션 명시적(finalize메소드) 호출하는 2가지 메소드

System.gc();

  • Garbage Collection 수행을 명령하는 메소드
  • GC가 발생하면, 소멸의 대상이 되는 인스턴스는 결정되지만 이것이 실제 소멸로 바로 이어 지지는 않습니다. 왜냐하면 인스턴스의 실제 소멸로 이어지지 않은 상태에서 프로그램이 종료될 수도 있습니다. 종료가 되면 어차피 인스턴스는 소멸 되기 때문입니다.

System.runFinalization();

GC에 의해서 소멸이 결정된 인스턴스를 즉시 소멸시키는 메소드

   

   

   

오버라이딩 기본 원칙

  1. 오버라이딩 될 메소드 호출후 (super.오버라이딩대상메소드( ); )
  2. 오버라이딩 수행

   

   

finalize()오버라이딩

@Override

protected void finalize() throws Throwable {

super.finalize();

   

System.out.println("finalize메소드 호출");

System.out.println(objName+" 소멸되었습니다.");

}

  

  • Object 클래스에 정의되어 있는 finalize 메소드에 중요한 코드가 삽입되어 있는지 확인을 하게 되면 만약에 해당 메소드에 중요한 코드가 삽입되어 있다면 단순한 오버라이딩으로 인해서 중요한 코드의 실행이 가려질 수 있습니다.
  • 따라서 오버라이드 대상 메소드에 대한 정보가 부족한 경우에는 오버라이딩 될 메소드도 호출이 되도록한 후 오버라이딩을 하시기 바랍니다. 이것이 오버라이딩의 기본 원칙입니다.