एक संदर्भ रखें। यदि आपका ऑब्जेक्ट समय-समय पर एकत्र हो रहा है, तो यह एक लक्षण है कि आपके आवेदन के डिज़ाइन में आपके पास एक बग है।
कचरा कलेक्टर केवल उन वस्तुओं को एकत्र करता है जिनके लिए आपके आवेदन में कोई संदर्भ नहीं है। यदि कोई वस्तु नहीं है जो स्वाभाविक रूप से संग्रहित वस्तु का संदर्भ देगी, तो खुद से पूछें कि इसे जीवित क्यों रखा जाना चाहिए।
एक उपयोगकेस जिसमें आपको आम तौर पर कोई संदर्भ नहीं है, लेकिन ऑब्जेक्ट रखना एक सिंगलटन है। इस मामले में, आप एक स्थिर चर का उपयोग कर सकते हैं। एक सिंगलटन का एक संभावित क्रियान्वयन इस प्रकार दिखाई देगा:
public class Singleton {
private static Singleton uniqueInstance;
private Singleton() {
}
public static synchronized Singleton getInstance() {
if (uniqueInstance == null) {
uniqueInstance = new Singleton();
}
return uniqInstance;
}
}
संपादित करें: तकनीकी तौर पर, आप अपने finalizer में कहीं एक संदर्भ स्टोर कर सकते हैं। यह ऑब्जेक्ट को तब तक एकत्रित करने से रोक देगा जब तक संग्राहक फिर से निर्धारित नहीं करता कि कोई और संदर्भ नहीं है। फाइनलर को केवल एक बार में बुलाया जाएगा, हालांकि, आपको यह सुनिश्चित करना होगा कि आपके ऑब्जेक्ट (इसके सुपरक्लास सहित) को पहले संग्रह के बाद अंतिम रूप देने की आवश्यकता नहीं है। हालांकि, मैं आपको सलाह दूंगा कि इस तकनीक का वास्तविक कार्यक्रमों में उपयोग न करें। (ऐसा लगता है कि मुझे WTF चिल्ला !? सहयोगियों छोड़ देंगे;)
protected void finalize() throws Throwable {
MyObjectStore.getInstance().store(this);
super.finalize(); // questionable, but you should ensure calling it somewhere.
}
कुछ कोड प्रदान करें टुकड़े –
राहुल, आप निर्देशन कर रहे थे विशेष रूप से किसी को भी की ओर "कुछ कोड के टुकड़े प्रदान करें", या थे आप अपने प्रश्न की आवश्यकताओं को अद्यतन करना चाहते हैं? –
अरे मैंने अपने ques –