gpt4 book ai didi

java - 在 Java 中将对象分配给 null 会影响垃圾收集吗?

转载 作者:IT老高 更新时间:2023-10-28 11:43:53 25 4
gpt4 key购买 nike

在 Java 中将未使用的对象引用分配给 null 是否以任何可衡量的方式改进了垃圾收集过程?

我在 Java(和 C#)方面的经验告诉我,试图超越虚拟机或 JIT 编译器通常是违反直觉的,但我看到同事使用这种方法,我很好奇这是否是一个好方法练习拿起或那些巫毒编程迷信之一?

最佳答案

通常不会。

但就像所有事情一样:这取决于。现在 Java 中的 GC 非常好,所有东西都应该在它不再可用后很快被清理掉。这只是在为局部变量留下方法之后,并且不再为字段引用类实例时。

如果你知道它会被引用,你只需要显式地为空。例如一个被保留的数组。当不再需要数组的各个元素时,您可能希望它们为空。

例如,ArrayList 中的这段代码:

public E remove(int index) {
RangeCheck(index);

modCount++;
E oldValue = (E) elementData[index];

int numMoved = size - index - 1;
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved);
elementData[--size] = null; // Let gc do its work

return oldValue;
}

此外,只要没有引用保留,显式地清空一个对象不会比它自然超出范围更早被收集。

两者:

void foo() {
Object o = new Object();
/// do stuff with o
}

和:

void foo() {
Object o = new Object();
/// do stuff with o
o = null;
}

在功能上是等价的。

关于java - 在 Java 中将对象分配给 null 会影响垃圾收集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/449409/

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