스터디/이펙티브 자바

[Effective Java] Item 8. finalizer와 cleaner 사용을 피하라.

📝 작성 : 2022.05.15  ⏱ 수정 : 
728x90

사용하지 마세요

finalizer는 예측할 수 없고, 상황에 따라 위험할 수 있습니다. 그래서 자바9 부터는 deprecated되었고 cleaner를 대안으로 소개합니다.
하지만 이 역시 finalizer보다는 덜 위험하지만, 예측할 수 없고, 느리고, 일반적으로 불필요합니다.

사용하지 말아야 할 이유

  1. 즉시 수행된다는 보장이 없습니다.
  2. 수행 여부도 보장하지 않습니다.
  3. 느립니다.
  4. finalizer를 사용한 클래스는 finalizer공격에 노출되어 보안문제를 일으킬 수도 있습니다.

대안

AutoCloseable을 구현하고, 인스턴스를 다 쓰고나면 close 메서드를 호출합니다.

반응형