提问人:lucoski 提问时间:10/28/2023 最后编辑:Mark Rotteveellucoski 更新时间:10/30/2023 访问量:65
Java “释放”内存的良好实践 [重复]
Java good practices to "free" memory [duplicate]
问:
这个问题在这里已经有答案了:
在 Java 中将对象分配给 null 会影响垃圾回收吗? (15 个答案)
在处理后将对象设置为 null 是一种好的做法吗?[复制] (3 个答案)
Java 可以在对象仍在范围内时完成该对象吗? (2 个答案)
26天前关闭。
这篇文章在 26 天前被编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
我试图了解在 Java 中将变量引用为 null 是否是一种好的做法,以帮助垃圾收集器识别可释放的对象。
当我调用一个方法并实例化一个新对象时,当该方法结束时,我将没有对该对象的引用,因此在这里“无效”变量是没有用的。在 main 方法中实例化的对象呢?
假设我有这样的东西:
List<Integer> l = new ArrayList<>();
for (int i = 0; i < 10; i++) {
doSomething(l.get(0);
}
我需要这个列表只是为了这个操作,我不会再使用它了。将变量设置为 null 是一种好的做法/有用吗?l
另一个示例可能是在创建要添加到列表中的对象时,如下所示:
List<Integer> l = new ArrayList<>();
Integer intVal0 = 0;
Integer intVal1 = 1;
l.add(intVal0);
l.add(intVal1);
/*Say we'll do something with the list but will never use it again*/
在上面的示例中,我是否应该像(如果应该)对列表所做的那样将 intVal0 和 intVal1 设置为 null?
有人说垃圾收集器足够聪明,可以自己理解它,所以它只会让我的代码看起来很糟糕,其他人则说“无效”变量可以帮助 GC。
我的问题中最重要的部分是,Java 编译器能否理解一个变量是否永远不会再次使用并使显式 null 赋值变得无用(因为我认为如果它能做到这一点,它就会自己赋值 null)?如果它能做到,程序员可以完全依赖它,或者它仍然是一个很好的做法吗?
答: 暂无答案
评论
referencing a variable to null is a good practice
不。基本上永远不要这样做。如果你不知道为什么,我认为你需要更多地学习这门语言。intVal0
intVal1
null
null
null
Integer