"हाय, अमिगो!"
"अरे, एली. तुला मला काही इंटरेस्टिंग सांगायचे आहे का?"
"आज आपण एखादी वस्तू किती काळ स्मृतीमध्ये राहते याविषयी बोलू, ज्याला त्या वस्तूचे आयुष्य म्हणूनही ओळखले जाते. एखादी वस्तू तयार झाल्यानंतर, किमान एक व्हेरिएबल जोपर्यंत त्याचा पत्ता संग्रहित करत आहे तोपर्यंत ती अस्तित्वात असते (जिवंत असते) त्याचा संदर्भ). जर आणखी काही संदर्भ नसतील तर वस्तू मरते. येथे काही उदाहरणे आहेत:"
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 मध्ये सॅमीचा संदर्भ आहे . शेवटी, ऑब्जेक्टचा शेवटचा उरलेला संदर्भ मुख्य पद्धतीच्या शेवटच्या ओळीत शून्य वर सेट केला आहे."
"मिस्सी ऑब्जेक्ट त्याच्या निर्मितीनंतर फक्त एका ओळीसाठी अस्तित्वात आहे. पुढील ओळीत, cat2 व्हेरिएबल दुसर्या मूल्यावर सेट केले आहे, आणि Missy चा संदर्भ गमावला आहे. ऑब्जेक्ट यापुढे प्रवेश केला जाऊ शकत नाही, म्हणून तो कचरा मानला जातो. प्रणाली (म्हणजे ऑब्जेक्ट मृत आहे).
"एकदा तयार केल्यावर, पद्धत संपेपर्यंत आले ऑब्जेक्ट अस्तित्वात असते. पद्धतीच्या शेवटी, cat2 व्हेरिएबल नष्ट होते, त्यानंतर लगेचच आले नष्ट होते."
"मी बघतो."
"परंतु जर आपण एखाद्या पद्धतीमध्ये कॅट ऑब्जेक्ट तयार केला आणि त्याचा संदर्भ व्हेरिएबलमध्ये संग्रहित केला, तर कॅट ऑब्जेक्ट अस्तित्वात असेल जोपर्यंत तो अद्याप जिवंत असलेल्या दुसर्या ऑब्जेक्टद्वारे संदर्भित असेल."
"वास्तविकपणे, प्रणालीद्वारे एखादी वस्तू त्वरित नष्ट केली जात नाही. Java व्हर्च्युअल मशीन वेळोवेळी 'कचरा संकलन' करते आणि हटवण्याकरिता चिन्हांकित केलेल्या वस्तू नष्ट करते. त्या प्रक्रियेबद्दल नंतर अधिक."
"आणि, जर आम्हाला यापुढे एखाद्या वस्तूचा संदर्भ देण्यासाठी व्हेरिएबल नको असेल, तर आम्ही ते null वर सेट करू शकतो किंवा दुसर्या ऑब्जेक्टचा संदर्भ देऊ शकतो."
GO TO FULL VERSION