首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Finalizer方法和GC

Java Finalizer方法和GC
EN

Stack Overflow用户
提问于 2012-09-18 01:54:01
回答 1查看 289关注 0票数 2

我已经创建了一个对象,它的finalize方法已经被覆盖,用来保存和关闭包含一些信息的文件。该对象被另一个对象弱引用。当GC发生时,我想保存对对象的一些更改。这就是为什么我重写了finalize的代码。

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

我不想这样,我想在GC发生时立即调用finalize方法,并且不应该有任何延迟。有没有可以设置的jvm选项来实现这一点?我只能看到另一种方式是"System.runFinalization()",但这似乎很俗气??有没有更优雅的方式?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2012-09-18 02:05:21

我想在GC发生时立即调用

方法,

你不能不使用内部API,我不建议你使用。

不应该有任何延迟。

总是有滞后的。仅仅关闭文件就需要几毫秒的时间。发生这种情况时,应用程序会冻结吗(因为应用程序可能会在GC运行时冻结)

有没有更优雅的方式?

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12464659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档