Dev Book Review/Effective Java
2020. 4. 15.
[Effective Java] item8. finalizer와 cleaner 사용을 피해라
1. 자바의 객체 소멸자 finailzer : 예측할 수 없고, 상황에 따라 위험할 수 있어 일반적으로 불필요하다. 오동작, 낮은 성능, 이식성 문제의 원인 "쓰지말자" cleaner : finailzer보단 덜 위험하지만, 여전히 예측할 수 없고, 느리고, 일반적으로 불필요하다. C++의 파괴자 try-with-resources, try-finally 2. finalizer와 cleaner 사용을 피해야하는 이유 a. 즉시 수행된다는 보장이 없다. 객체에 접근할 수 없게 된 이후부터 실행되기까지 얼마나 걸릴지 알 수 없다.= 제때 실행되어야하는 작업은 절대 할 수 없다. 수행 시점이 전적으로 GC 알고리즘에 달려있으며, 구현 방식에 따라 천차만별이다. finalizer 쓰레드는 다른 애플리케이션보다 우..