【发布时间】:2012-09-17 17:54:00
【问题描述】:
我创建了一个对象,该对象的 finalize 方法已被覆盖,以保存和关闭包含一些信息的文件。该对象被另一个对象弱引用。我想在 GC 发生时保存对对象的一些更改。这就是为什么我覆盖了 finalize 的代码。
但是,当一个对象即将被垃圾回收时,会调用 finalize 方法。这可以在它符合垃圾收集条件之后的任何时间。
我不想要这个,我想GC一发生就调用finalize方法,不应该有任何延迟。我可以设置任何 jvm 选项来实现这一点吗? 我只能看到另一种方式是“System.runFinalization()”,但这似乎很俗气?? 有没有更优雅的方式?
谢谢
【问题讨论】:
-
也许你看看这个问题:stackoverflow.com/questions/2506488/…
-
依赖
finalize做应用程序逻辑从来都不是一个好主意。您将需要在您认为不再需要该对象的地方手动执行代码。最重要的原因是finalize可能根本不会被调用。
标签: java garbage-collection weak-references finalize