0

我可以在逻辑上控制 finalize() 方法在 java 中运行或不运行吗?
我想根据条件方法返回的结果运行 finalize() 方法。

4

5 回答 5

2

我可以在逻辑上控制 finalize() 方法在 java 中运行或不运行吗?

答案是你不能。

我想根据条件方法返回的结果运行 finalize() 方法。

您可以在 finalize 中使用条件或标志检查来决定是否要进行清理。

于 2013-10-04T07:35:43.170 回答
0

你不能。开始清理Asynchronously时调用。GC

请参阅相同的文档

当垃圾收集确定不再有对该对象的引用时,由对象上的垃圾收集器调用。子类覆盖 finalize 方法以释放系统资源或执行其他清理。

但是在最终确定中进行清理(或一些逻辑)对我来说似乎没有什么设计缺陷。

于 2013-10-04T07:35:35.620 回答
0

你试过
Runtime.getRuntime().runFinalizersOnExit(boolean value)

于 2013-10-04T07:37:53.130 回答
0

坦率地说,您无法控制 finalize 方法。这一切都取决于 JVM 逻辑。最多只能调用 System.gc(); 请求 JVM 运行垃圾收集器,但它再次完全取决于 JVM 算法是否运行它。

如果您的对象将在任何时间点被垃圾收集但不能保证,则 Finalize 方法只是进行一些操作的一个选项。

于 2013-10-04T07:38:54.267 回答
0

如果你真的想做自定义任务,你可以覆盖 finalize 方法。但最好不要依赖它。

于 2013-10-04T07:40:41.307 回答