我可以在逻辑上控制finalize()方法在java中运行与否

时间:2013-10-04 07:33:31

标签: java

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

5 个答案:

答案 0 :(得分:2)

  

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

答案是你不能。

  

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

您可以在最终确定中使用条件或标记来确定是否要进行清理。

答案 1 :(得分:0)

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

请参阅docs

  

当垃圾收集确定没有对该对象的更多引用时,由对象上的垃圾收集器调用。子类重写finalize方法以处置系统资源或执行其他清理。

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

答案 2 :(得分:0)

你尝试过吗? Runtime.getRuntime()。runFinalizersOnExit(boolean value)

答案 3 :(得分:0)

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

如果你的对象在任何时候被垃圾收集但是不能保证,那么Finalize方法只是做一些操作的选项。

答案 4 :(得分:0)

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