use*_*185 2 java garbage-collection weak-references finalize
我创建了一个对象,其finalize方法已被覆盖,以保存和关闭具有一些信息的文件.该对象是从另一个对象引用的弱对象.我希望在GC发生时保存对象的一些更改.这就是为什么我覆盖了finalize的代码.
但是,当一个对象即将收集垃圾时调用finalize方法.这可以在它有资格进行垃圾收集之后的任何时间.
我不想要这个,我想在GC发生时立即调用finalize方法,并且不应该有任何延迟.有没有我可以设置的jvm选项来实现这个?我只能看到另一种方法是"System.runFinalization()",但这看起来很俗气?有更优雅的方式吗?
谢谢
我想在GC发生时立即调用finalize方法,
你不能不使用内部API我不建议你使用.
不应该有任何滞后.
总是有滞后的.关闭文件需要几毫秒.在发生这种情况时你是否可以暂停应用程序(因为应用程序可以在GC运行时冻结)
有更优雅的方式吗?
如果要确定性地发生,请在完成后关闭资源.