Điển hình là không.
Nhưng giống như tất cả mọi thứ: nó phụ thuộc. GC trong Java ngày nay RẤT tốt và mọi thứ sẽ được dọn dẹp rất nhanh sau khi không thể truy cập được nữa. Đây chỉ là sau khi để lại một phương thức cho các biến cục bộ và khi một cá thể lớp không còn được tham chiếu cho các trường.
Bạn chỉ cần null rõ ràng nếu bạn biết nó sẽ vẫn được tham chiếu nếu không. Ví dụ một mảng được giữ xung quanh. Bạn có thể muốn bỏ trống các phần tử riêng lẻ của mảng khi chúng không còn cần thiết nữa.
Ví dụ, mã này từ 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;
}
Ngoài ra, việc vô hiệu hóa một đối tượng một cách rõ ràng sẽ không làm cho một đối tượng được thu thập sớm hơn nếu nó chỉ ra khỏi phạm vi một cách tự nhiên miễn là không còn tham chiếu nào.
Cả hai:
void foo() {
Object o = new Object();
}
và:
void foo() {
Object o = new Object();
o = null;
}
Có chức năng tương đương.