通常,没有。
但像所有的东西:这取决于。 Java中的GC这些天是非常好的,一切都应该清除后不久它不再可达。这是在离开局部变量的方法之后,以及当字段不再引用类实例时。
你只需要显式null,如果你知道它会保持引用否则。例如,一个围绕着的数组。当不再需要数组的各个元素时,您可能希望将其置零。
例如,这段代码从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;
}
在功能上等同。