Closed dev-jaekkim closed 2 years ago
finalizer가 java9에서 deprecated되고 나서 나온게 cleaner로 알고 있습니다. 어떤 점이 개선된 건지 궁금해요.
실무나 개인 작업 시, "finalizer" 또는 "cleaner" 사용하신 적 있으신가요? 있다면 어떤 상황에서 사용했는지 궁금해요~
이번주 리딩하시는 분 말고도 다른 분들도용!
제가 실무에서 finalizer를 사용해본적은 없으나, FileInputStream이나, FileOuputStream 상태에서 resource에 대한 연결을 해제해야할 경우 사용하면 될듯합니다~! cleaner는 제가 아직 자바8만 경험을 해봐서 써본적이 없네요 ㅠ
finalizer가 java9에서 deprecated되고 나서 나온게 cleaner로 알고 있습니다. 어떤 점이 개선된 건지 궁금해요.
우선 제가 찾아본 글에 따르면, cleaner가 보다 더 finalization에 비해 사용이 쉽다고 합니다. 이는 객체를 등록하고 취소함에 있어서 그렇다고 하는데요. Cleaner의 경우 이미 존재하고 있는 PhantomReference, WeakReference, SoftReference, reference Que를 활용하여 cleaning 작업을 수행하도록 한다고 합니다. (그에 비해 finalization은 개발자가 PhantomReference를 활용하여 클리닝을 해도 ReferenceQueue에 대해 필요한 기능을 직접 만들어야 했다고 합니다.)
참고하면 좋은 글 1) https://stackoverflow.com/questions/48533097/in-java9-finalizers-have-been-deprecated-instead-cleaners-have-been-introduced 2) https://bugs.openjdk.java.net/browse/JDK-8138696 3) https://bugs.openjdk.java.net/browse/JDK-8165641 4) https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html#finalize--
실무나 개인 작업 시, "finalizer" 또는 "cleaner" 사용하신 적 있으신가요? 있다면 어떤 상황에서 사용했는지 궁금해요~
이번주 리딩하시는 분 말고도 다른 분들도용!