"हाय, अमीगो!"
"अरे, ऐली। क्या तुम्हारे पास मुझे बताने के लिए कुछ दिलचस्प है?"
"आज हम इस बारे में बात करेंगे कि कोई वस्तु कितनी देर तक स्मृति में रहती है, जिसे वस्तु के जीवनकाल के रूप में भी जाना जाता है। किसी वस्तु के बनने के बाद, यह तब तक मौजूद रहती है (जीवन) जब तक कम से कम एक चर अपना पता संग्रहीत कर रहा है (कम से कम एक है) इसके संदर्भ में)। यदि कोई और संदर्भ नहीं हैं, तो वस्तु मर जाती है। यहां कुछ उदाहरण दिए गए हैं: "
public class MainClass
{
public static void main (String[] args)
{
┏ Tommy
┃ Cat cat = new Cat("Tommy");
┃ cat = null;
┗
┏ Sammy
┃ Cat cat1 = new Cat("Sammy");
┃┏ Missy
┃┃Cat cat2 = new Cat("Missy");
┃┃cat2 = cat1;
┃┗
┃┏ Ginger
┃┃cat1 = new Cat("Ginger");
┃┃cat2 = null;
┃┗
┗
}
}
"टॉमी ऑब्जेक्ट इसके निर्माण से केवल एक पंक्ति के लिए मौजूद है। ऑब्जेक्ट को संदर्भित करने वाला एकमात्र चर अगली पंक्ति में शून्य पर सेट है, इसलिए ऑब्जेक्ट जावा वर्चुअल मशीन (JVM) द्वारा नष्ट हो जाता है।"
"सैमी ऑब्जेक्ट को बनाए जाने के बाद cat1 चर में संग्रहीत किया जाता है। या, अधिक सटीक रूप से, चर इसके लिए एक संदर्भ संग्रहीत करता है। कुछ पंक्तियों के बाद, इस संदर्भ को cat2 में कॉपी किया जाता है । फिर किसी अन्य ऑब्जेक्ट का संदर्भ सहेजा जाता है cat1 । अब, केवल cat2 सैमी का संदर्भ देता है । अंत में, ऑब्जेक्ट का अंतिम शेष संदर्भ मुख्य विधि की अंतिम पंक्ति में शून्य पर सेट है। "
"मिस्सी ऑब्जेक्ट इसके निर्माण के बाद केवल एक पंक्ति के लिए मौजूद है। अगली पंक्ति में, कैट 2 चर को दूसरे मान पर सेट किया गया है, और मिस्सी का संदर्भ खो गया है। ऑब्जेक्ट को अब एक्सेस नहीं किया जा सकता है, इसलिए इसे कचरा माना जाता है सिस्टम (यानी वस्तु मर चुकी है)।"
"एक बार बनने के बाद, जिंजर वस्तु तब तक मौजूद रहती है जब तक कि विधि समाप्त नहीं हो जाती। विधि के अंत में, कैट 2 चर नष्ट हो जाता है, इसके तुरंत बाद अदरक नष्ट हो जाता है।"
"अच्छा ऐसा है।"
"लेकिन अगर हम एक विधि के अंदर एक कैट ऑब्जेक्ट बनाते हैं और एक इंस्टेंस वेरिएबल में इसके संदर्भ को स्टोर करते हैं, तो कैट ऑब्जेक्ट तब तक मौजूद रहेगा जब तक कि यह किसी अन्य ऑब्जेक्ट द्वारा संदर्भित होता है जो अभी भी जीवित है।"
"वास्तव में, एक वस्तु आमतौर पर सिस्टम द्वारा तुरंत नष्ट नहीं होती है। जावा वर्चुअल मशीन समय-समय पर 'कचरा संग्रह' करती है, उन वस्तुओं को नष्ट करती है जिन्हें हटाने के लिए चिह्नित किया गया है। उस प्रक्रिया के बारे में अधिक बाद में।"
"और, यदि हम किसी वस्तु को संदर्भित करने के लिए एक चर नहीं चाहते हैं , तो हम इसे शून्य पर सेट कर सकते हैं , या इसे किसी अन्य वस्तु का संदर्भ दे सकते हैं।"
GO TO FULL VERSION