通常没有。
但是像所有事物一样:这取决于。如今,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;
}
在功能上是等效的。