autocloseable
-
[Effective Java] 아이템8: finalizer와 cleaner 사용을 피하라Language/Java 2022. 5. 30. 00:39
자바는 두 가지 객체 소멸자를 제공한다. 1️⃣ 첫 번째는 finalizer 다. finalizer는 예측할 수 없고, 상황에 따라 위험할 수 있어 일반적으로 불필요하다. 2️⃣ 두 번째는 cleaner 다. finalizer는 오동작, 낮은 성능, 이식성 문제가 있었기 때문에, 자바 9에서 deprecated API로 지정되었고 finalizer의 대안으로 cleaner가 소개되었다. cleaner는 finalizer보다는 덜 위험하지만, 여전히 예측할 수 없고, 성능이 느리고, 일반적으로 불필요하다. 그렇다면 지금부터 finalizer와 cleaner의 문제점을 알아보자. ✔️ 불확실성 (수행 미보장) finalizer와 cleaner는 즉시 수행된다는 보장이 없다. 객체에 접근할 수 없게 된 후 f..