Zazwyczaj nie.
Ale jak wszystko: to zależy. GC w Javie jest obecnie BARDZO dobry i wszystko powinno zostać wyczyszczone bardzo szybko po tym, jak nie będzie już dostępne. Dzieje się tak zaraz po opuszczeniu metody dla zmiennych lokalnych i gdy wystąpienie klasy nie jest już przywoływane dla pól.
Musisz tylko jawnie określić wartość null, jeśli wiesz, że w przeciwnym razie pozostanie przywoływanym. Na przykład tablica, która jest przechowywana w pobliżu. Możesz chcieć wyzerować poszczególne elementy tablicy, gdy nie są już potrzebne.
Na przykład ten kod z 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;
return oldValue;
}
Also, explicitly nulling an object will not cause an object to be collected any sooner than if it just went out of scope naturally as long as no references remain.
Both:
void foo() {
Object o = new Object();
}
and:
void foo() {
Object o = new Object();
o = null;
}
Are functionally equivalent.