gpt4 book ai didi

java - 将对象引用设置为 null 或调用 finalize() 方法?

转载 作者:搜寻专家 更新时间:2023-10-31 19:38:17 25 4
gpt4 key购买 nike

作为一个java初学者,想请教一下在大型项目中是将对象引用设置为null,还是调用finalize方法?

例如,

while( obj... some code here){
//code stuff
}
obj = null; // or obj.finalize();

既然我已经完成了 obj 并且没有更多的引用,我应该如何处理它?将其设置为 null 或调用 finalize();?

我读了java doc但是这段 Java 虚拟机对任何给定对象的 finalize 方法永远不会调用超过一次。 让我感到困惑。这是否意味着即使我使用它,除非 GC 决定这样做,否则它根本不会做任何事情?那么,我将 obj 设置为 null 的决定会有帮助吗?

这一切都假设它是一个大型项目,并且范围尚未结束,以便 GC 自行解除分配。谢谢。

最佳答案

都没有。如果 obj 不再在代码中进一步使用(并且没有其他引用与 obj 相同的对象),则该对象将不再可达,并将成为垃圾收集。

obj 设置为 null 不会有任何效果(YMMV 取决于垃圾收集器的实现)。

至于调用finalize(),不要。让垃圾收集器来处理。但请注意,finalize 是一种与其他方法一样的方法。你引用的文字是说 GC 不会多次调用它,无论你的代码可能调用它多少次。

关于java - 将对象引用设置为 null 或调用 finalize() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27824729/

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