결론! 위 두개를 사용해서 객체 사용이 끝나는 시점에 소멸시켜야지! 라고 사용하지 말자.

GC의 대상은 되지만 바로 수거해가는게 아니다.

finalize 메서드

finalize 메서드

finalizer와 cleaner를 유용하게 사용할 일은 극히 드물다.

즉시 수행된다는 보장이 없다.

finalizercleaner즉시 수행된다는 보장이 없다. 언제 실행될 지 알 수 없으며 시간이 얼마나 걸릴지는 아무도 모른다. 즉 원하는 시점에 실행하게 하는 작업은 절대 할 수 없다.

  1. 파일 리소스를 반납하는 작업을 처리한다면 그 파일 리소스가 언제 처리 될지 알 수 없다.
  2. 반납이 되지 않아 새로운 파일을 열지 못 하는 상황이 발생할 수 있다.
  3. 동시에 열 수 있는 파일 개수가 제한되어 있다.

얼마나 빠르게 실행될지 알 수 없다.

얼마나 신속히 수행될지는 가비지 컬렉터에게 기도해야 한다. 🙏

전적으로 가비지 컬렉터 알고리즘에 달려있으며 가바지 컬렉터마다 다르다.

현재 프로그래머가 테스트한 JVM에선 완벽하게 동작하여도 고객의 시스템에선 재앙을 일으킬 수 있다.

우선순위가 낮다.