이펙티브 자바 아이템8 정리

이창호·2022년 4월 25일
0

이펙티브자바

목록 보기
10/12

finalizer와 cleaner 사용을 피하라

finalizer & Cleaner

  • 자바에서 제공하는 객체 소멸자다.
  • GC의 알고리즘에 따라 즉각 수행 시점, 수행 여부가 달라진다.
  • 보통 객체 회수 역할은 try-with-resource, try-finally로 해결 한다.
  • ttry-with-resources로 AutoCloseable 객체를 생성하고 GC가 수거하는 것과 이 녀석들을 사용하는 시간의 차이는 약 50배가 날 정도로 느리다.

결국 try-with-resources로 해결하라.

  • finalizer를 사용한 클래스는 finalizer 공격에 취약하다.
  • 결국 대안은 AUtoCloseable을 구현해주고, 클라이언트에서 인스턴스를 다 쓰고 나면 close 메서드를 호출하면 된다. ( 이 과정은 try-with-resources를 사용하면 자동으로 해결 된다. )
profile
이타적인 기회주의자

0개의 댓글