आमतौर पर, नहीं।
लेकिन सभी चीजों की तरह: यह निर्भर करता है। जावा में इन दिनों 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;
return oldValue;
}
इसके अलावा, किसी वस्तु को स्पष्ट रूप से खींचने से किसी वस्तु को जल्द से जल्द एकत्र करने का कारण नहीं बनेगा, अगर वह केवल प्राकृतिक रूप से तब तक दायरे से बाहर जाती है जब तक कोई संदर्भ नहीं रहता है।
दोनों:
void foo() {
Object o = new Object();
}
तथा:
void foo() {
Object o = new Object();
o = null;
}
कार्यात्मक रूप से समतुल्य हैं।