이펙티브자바 아이템8
-
아이템8. finalizer와 cleaner 사용을 피하라책/이펙티브자바 2021. 6. 26. 18:33
자바에서는 두 가지 객체 소멸 자를 제공한다. finalizer 오동작, 낮은 성능 예측할 수 없고 위험하여 일반적으로 불필요하다. 자신을 수행할 스레드를 제어할 수 없다. finalizer 공격에 노출되어 심각한 보안문제를 일으킬 수 있다. 생성자나 직렬화 과정에서 예외가 발생하면, 악의적으로 하위 클래스의 finalizer가 수행될 수도 있다. GC가 수집하지 못하게 막을 수 있다. 위와 같은 이유로 Java9 에서 deprecated 되었고 새로운 대안으로 cleaner를 소개한다. cleaner finalizer 보다는 덜 위험하다. 하지만 여전히 예측할 수 없고, 느리고, 일반적으로 불필요하다. 자신을 수행할 스레드를 제어할 수 있다. 공통사항 즉시 수행된다는 보장이 없다. 실행되기까지 얼마나 ..