파이널라이저는 예측 불가에다가 위험하기도 하며 일반적으로는 불필요하다.
파이널라이저의 경우 신속하게 실행된다는 보장이 없다. 즉 객체가 사용할 수 없게 되는 시점부터 파이널라이저가 실행되는 시점까지 긴 시간이 소요될 수 있다.
즉 파이널라이저 내부에서 실행 시간이 매우 중요한 작업을 절대 하면 안된다. 예를 들어 파일을 닫는 경우이다.
이 경우 파일이 언제 닫힐 지 몰라 어플리케이션에 문제가 생길 수 도 있다.
파이널라이저의 실행 시점이 늦는 것은 이론 상의 문제만은 아니다. 클래스에 파이널라이저를 사용하면 간혹 인스턴스들의 매모리 회수와 재활용이 지연될 수 있다. 즉 사용을 하지 말자 되도록이면 try catch fanally 로 구문으로 확실하게 실행시키도록 하자.
'개발 이야기 > Effective Java' 카테고리의 다른 글
Item 9. equals 메소드를 오버라이드 할 때는 hashcode 메소드도 항상 같이 오버라이드 하자. (0) | 2010.03.11 |
---|---|
Item 8. equals 메소드를 오버라이딩 할 때는 보편적 계약을 따르자. (0) | 2010.03.10 |
Item 6. 쓸모 없는 객체 참조를 제거하자. (0) | 2010.03.08 |
Item 5. 불필요한 객체의 생성을 피하자. (0) | 2010.03.08 |
Item 4. private 생성자를 사용하여 인스턴스 생성을 못하게 하자. (0) | 2010.03.04 |