Java Finalize
Java Finalize
Java Finalize 메소드
Object
클래스의 메소드이며, 어떤 객체에 대한 참조가 없을때 GC가 수행하는 메소드- 즉, 힙 영역에서 객체를 제거하는 역할을 하며, C++의 소멸자와 유사
- 이 메소드는 여러 가지 문제가 존재하며, 특히 수동으로 호출하는 경우 더욱 문제될 수 있음
Java 9
에서deprecated
됨. 추후 삭제될 여정
Finalize 문제점
- 참조가 있는 객체를 가비지로 판단해 수집 하는 등 실행을 예측 불가
- 수동으로 호출해도 실행되지 않거나 아주 늦게 실행될 수 있음
- 죽은 클래스를 부활시킬 수 있음
- 이러한 불안정성 때문에 finalize를 활용한 구현이 매우 힘듦
References
- https://www.itworld.co.kr/howto/224419
- https://codingdog.tistory.com/entry/java-finalize-%EB%A9%94%EC%86%8C%EB%93%9C-%EC%96%B8%EC%A0%9C-%EC%8B%A4%ED%96%89%EB%90%A0%EC%A7%80-%EB%AA%A8%EB%A5%B8%EB%8B%A4