Java에서 finalizer
와 cleaner
는 객체가 더 이상 사용되지 않을 때 자원을 정리하는 방법과 관련된 개념이다.
AutoCloseable
은 자원을 명시적으로 해제할 수 있도록 하는 인터페이스이다. 이를 구현하면 close()
메서드를 제공하여 자원 해제를 처리할 수 있다.close()
메서드가 호출되어 자원을 해제한다. 이 방식은 가비지 컬렉션과 무관하게 즉각적으로 자원을 정리하므로 성능이 우수하다.close()
메서드에서 이 필드를 true
로 설정하고, 다른 메서드에서는 이 필드를 검사하여 객체가 닫힌 상태에서 호출되면 IllegalStateException
을 던지도록 한다.finalizer
와 cleaner
는 성능 저하와 예측 불가능성 문제로 인해 현대 Java 프로그래밍에서는 거의 사용되지 않으며, 대신 AutoCloseable
과 try-with-resources
를 활용한 명시적인 자원 관리가 권장됨