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를 사용하면 자동으로 해결 된다. )