Fagam32 :
나는지도를 가지고
public class MyMap implements Map<String,String>
그것은 DB에 몇 가지 물건을 수행하고 그것은 다음 중 하나를 수행해야 파괴하는 방법 :
- 가베지 수집없이에는 myMap를 파괴하는 경우
close()
가 실행해야보다clear()
방법 - 객체 후 파괴되면
close()
모든 데이터가 DB에 저장보다,
그것은 FileWriter처럼 작동합니다. 데이터 저장, 그렇게하지 않으면 - - 닫고 스트림이 경우에 당신은 잃을 :(
나는 무엇을 사용해야합니까? finalize()
단순히 구현 Closeable
또는 AutoCloseable
뭔가 다른 또는?
Dnlst :
finalize()
되는 자바 9부터 사용되지 않습니다 . 전화 할 경우 : VM이 종료 경우는 호출 할 수 없습니다 Runtime.runFinalizersOnExit(true)
가 실행됩니다 (하지만 다른 문제가있다).
대신 당신은 구현해야합니다 AutoClosable
.
이것은 자동을 닫을 수 Map
로모그래퍼 try-with-resources
.
당신은 또한 당신의 방법으로 구현 (도 ) 너무.close()
FileWriter
close()
FileWriter
Closeable
AutoCloseable
당신은, 당신은 대체 할 수 있습니다하려면 finalize()
폐쇄가 제대로 작동하지만 성능 문제를 돌봐하고 내 소스 상태로 다음하지 않은 경우 백업으로 방법 :
- 항상 전화
super.finalize()
당신의finalize()
방법.- 시간 중요한 애플리케이션 로직을 넣지 마십시오
finalize()
의 예측 불가능 성을보고.- 사용하지 마십시오
Runtime.runFinalizersOnExit(true);
가 위험에 시스템을 넣을 수있다.
- 시스템과 스스로 캐치와 로그 예외를 무시합니다.