스터디/이펙티브 자바
[Effective Java] Item 8. finalizer와 cleaner 사용을 피하라.
niniz
2022. 5. 15. 10:29
사용하지 마세요
finalizer는 예측할 수 없고, 상황에 따라 위험할 수 있습니다. 그래서 자바9 부터는 deprecated되었고 cleaner를 대안으로 소개합니다.
하지만 이 역시 finalizer보다는 덜 위험하지만, 예측할 수 없고, 느리고, 일반적으로 불필요합니다.
사용하지 말아야 할 이유
- 즉시 수행된다는 보장이 없습니다.
- 수행 여부도 보장하지 않습니다.
- 느립니다.
- finalizer를 사용한 클래스는 finalizer공격에 노출되어 보안문제를 일으킬 수도 있습니다.
대안
AutoCloseable
을 구현하고, 인스턴스를 다 쓰고나면 close 메서드를 호출합니다.
반응형