Finalizer & Cleaner
Finalizer
원래는 GC(Garbage Collection) 대상을 호출하기위해 오버라이딩하던 메서드임. 즉 객체가 없어지기전에 다른 자원들을 잘 정리해주는 의도로 사용하였었음.
Java 9 에서 해당 메서드는 페기(Deprecated) 되었음. 성능도 별로고 많은 오류도 있고 영원히? 수행되지 않거나 수행되더라도 간혹 Lock 에 걸려 프로그램 자체 먹통되는 경우가 종종 있었다고 함.
그 대체자로 java 9 에서 Cleaner 가 등장하게 되었다고 함.
Cleaner
Cleaner가 더이상 사용되지 않을때 Thread 에서 정의된 clean 작업을 수행.
결론:
Serialize 은 예측불가!수행 지점을 알수 없음.
보안에 취약하다.
대체자 cleaner 도 수행지점을 예측할수 없고 보안역시 취약하다고 한다.
꼭 사용해야 된다면 JNI (java native interface) 에서만 사용하라.
Last updated