사용하지 마세요
finalizer는 예측할 수 없고, 상황에 따라 위험할 수 있습니다. 그래서 자바9 부터는 deprecated되었고 cleaner를 대안으로 소개합니다.
하지만 이 역시 finalizer보다는 덜 위험하지만, 예측할 수 없고, 느리고, 일반적으로 불필요합니다.
사용하지 말아야 할 이유
- 즉시 수행된다는 보장이 없습니다.
- 수행 여부도 보장하지 않습니다.
- 느립니다.
- finalizer를 사용한 클래스는 finalizer공격에 노출되어 보안문제를 일으킬 수도 있습니다.
대안
AutoCloseable
을 구현하고, 인스턴스를 다 쓰고나면 close 메서드를 호출합니다.
반응형
'스터디 > 이펙티브 자바' 카테고리의 다른 글
[Effective Java] Item10. equals는 일반 규약을 지켜 재정의 (0) | 2022.05.21 |
---|---|
[Effective Java] Item 9. try-finally보다는 try-with-resource (0) | 2022.05.15 |
[Effective Java] Item 7. 다 쓴 객체를 참조 해제하라. (0) | 2022.05.15 |
[Effective Java] Item 6. 불필요한 객체 생성을 피하라 (0) | 2022.05.15 |
[Effective Java] Item 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용 (0) | 2022.05.14 |