Effective Java #7 종료자 사용을 피하라
종료자는 예측 불가능하며, 대체로 위험하고 일반적으로 불필요하다. 종료자를 사용하면 시스템 오류, 성능 문제, 이식성 문제가 발생할 수 있다. 종료자의 단점은 즉시 실행되리라는 보장이 전혀 없다는 것이다. 어떤 객체에 대한 모든 참조가 사라지고 나서 종료자가 실행되기까지는 긴 시간이 걸릴 수도 있다. 따라서 긴급한 작업을 종료자 안에서 처리하면 안된다. 예를 들어 종료자 안에 파일을 닫도록 하면 치명적이다. 종료자 실행 시점은 GC 알고리즘에 좌우되는데, 이 알고리즘은 JVM 마다 크게 다르다. 자바 명세에는 종료자가 즉시 실행되어야 한다는 문구도 없지만, 종료자가 결국에는 반드시실행되어야 한다는 문구도 없다. 따라서 종료자가실행되지 않은 객체가 남은 상태로 프로그램이 끝나게 되는 일도 충분히 가능하다...