Object.finalize()
은 Java 9에서 사용되지 않으므로 그 이유를 이해하고 있다고 생각합니다. 그러나 대체 방법을 찾는 데 문제가 있습니다.Java에서 finalize() 대체 Java
필자에게는 Configuration이라는 유틸리티 클래스가 있는데,이 유틸리티 클래스에는 기본적으로 응용 프로그램의 모든 것을 소유하고 응용 프로그램의 지속 기간 동안 지속되는 단일 인스턴스가 있습니다. 그것이 제공하는 서비스 중 하나는 로깅입니다. 첫 번째로 메시지 로깅을 요청하면 로거가 생성됩니다 (다양한 레거시 이유로 표준 객체가 아닌 자체 로거). Configuration 객체의 필드에 참조가 보관됩니다. 응용 프로그램이 정상적으로 종료되었거나 비정상적으로 종료 된 경우 로거에서 보유한 모든 리소스를 릴리스하려고합니다 (내 라이브러리 사용자가 자체 구현을 제공 할 수 있기 때문에 블랙 박스).
현재 logger.close()
을 호출하는 Configuration.finalize()
메서드를 사용하면이 작업을 수행 할 수 있습니다.
대신 무엇을해야합니까?
당신은 런타임에 shutdown hook로 스레드를 추가 할 수 있습니다
[FYI] (https://stackoverflow.com/a/20829327/1553851) – shmosel
응용 프로그램이 종료 될 때 최종 결정이 발생하지 않으므로 이전 접근법은 실현하지 못한 채 절대로 작동하지 않습니다. 그럼 이런 종류의 청소가 필요할 지 확신합니까? – Holger