一尘不染

什么时候在Java中调用finalize()方法?

java

我需要知道何时在finalize()中调用该方法JVM。我创建了一个测试类,该finalize()方法通过覆盖该方法来在调用该方法时将其写入文件。它不执行。谁能告诉我它为什么不执行的原因?


阅读 634

收藏
2020-02-25

共1个答案

一尘不染

通常,最好不要依赖finalize()进行任何清理等工作。

根据Javadoc(值得阅读),它是:

当垃圾回收确定不再有对该对象的引用时,由垃圾回收器在对象上调用。

正如Joachim指出的那样,如果对象始终是可访问的,则在程序生命中可能永远不会发生这种情况。

同样,不保证垃圾收集器在任何特定时间运行。总的来说,finalize()除非你有特定的需求,否则我想说的可能不是最好的通用方法。

2020-02-25