gpt4 book ai didi

Java Finalizer 方法和 GC

转载 作者:行者123 更新时间:2023-11-30 05:51:47 24 4
gpt4 key购买 nike

我创建了一个对象,其 finalize 方法已被覆盖以保存和关闭包含一些信息的文件。该对象是从另一个对象弱引用的。我想在 GC 发生时保存对对象的一些更改。这就是为什么我覆盖了最终确定的代码。

但是,当一个对象即将被垃圾回收时,finalize 方法被调用。这可以在它有资格进行垃圾收集后的任何时间进行。

我不想这样,我想GC一发生就调用finalize方法,不能有任何滞后。我可以设置任何 jvm 选项来实现这个目标吗?我只能看到另一种方式是“System.runFinalization()”,但这似乎很俗气?有没有更优雅的方式?

谢谢

最佳答案

I want to call the finalize method as soon as GC happens,

如果不使用内部 API,我不建议您使用。

there should not be any lag.

总是有延迟。仅仅关闭文件就需要很多毫秒。当发生这种情况时,您是否可以接受应用程序卡住(因为应用程序可能会在 GC 运行时卡住)

Is there a more elegant way?

如果您想要确定性地发生,请在完成后关闭资源。

关于Java Finalizer 方法和 GC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12464659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com