【发布时间】:2015-03-05 15:48:46
【问题描述】:
作为一个java初学者,我想问一下是否应该将对象引用设置为null,还是在大型项目中调用finalize方法?
例如,
while( obj... some code here){
//code stuff
}
obj = null; // or obj.finalize();
既然我已经完成了obj 并且没有更多关于它的引用,我应该如何处理它?将其设置为 null 或调用 finalize();?
我读了java doc 但这段The finalize method is never invoked more than once by a Java virtual machine for any given object. 让我很困惑。这是否意味着即使我使用它,除非 GC 决定这样做,否则它根本不会做任何事情?那么,我将 obj 设置为 null 的决定会有帮助吗?
这一切都假设它是一个大型项目,并且范围尚未结束,以便 GC 自行释放它。谢谢。
【问题讨论】:
-
这可能有助于理解
finalize-方法和GC:stackoverflow.com/questions/2506488/… -
感谢您回复 wassgren,我已经按照说明阅读了 java 文档。但是有像this 这样的解决方案强制使用finallize 方法并且确实有效,我想知道你应该在一个大项目上做什么。
-
永远不要使用 finalize 方法。这是完全不可预测的。
标签: java garbage-collection jvm