마무리 기능을 이해하려면 가비지 수집기 (GC) 워크 플로를 이해해야합니다. .finalize()를 호출해도 가비지 컬렉터가 호출되지 않고 system.gc도 호출되지 않습니다. 사실, 어떤 마무리는 코더가 객체 참조를 "참조되지 않음"으로 선언하는 데 도움이됩니다.
GC는 JVM의 실행 중 일시 중단을 강제합니다. 이로 인해 성능이 저하됩니다. 작동 중에 GC는 루트 객체 (기본 메소드 호출)에서 시작하여 참조 된 모든 객체를 트래버스합니다. 객체가 수동으로 참조되지 않는 것으로 선언하면이 일시 중단 시간을 줄일 수 있습니다. 이는 객체 참조가 자동화 된 런에 의해 더 이상 사용되지 않는다고 선언하기 위해 작업 비용을 줄이기 때문입니다. finalize()를 선언하면 코더는 객체에 대한 참조를 쓸모 없게 설정하므로 다음 GC 실행에서 GC 실행은 작업 시간을 사용하지 않고 객체를 스윕합니다.
인용구 : "개체에 대해 finalize 메서드가 호출 된 후 Java 가상 컴퓨터가 더 이상이 개체에 액세스 할 수있는 방법이 없음을 확인할 때까지 더 이상의 작업이 수행되지 않습니다. 오브젝트가 파기 될 가능성이있는 다른 오브젝트 또는 클래스에 의한 가능한 액션을 포함 해, 아직 죽지 않았다. "java.Object.finalize()의 Java API Doc로부터.
자세한 내용은 다음을 확인하시기 바랍니다. javabook.computerware