एक ऑब्जेक्ट का उपयोग करने के बाद, इसे गार्बेज कलेक्टर क्लास का उपयोग करके मेमोरी से डीअलोकेट किया जाता है। ऑब्जेक्ट्स को इस तथ्य के आधार पर नष्ट किया जाता है कि उस ऑब्जेक्ट का कोई संदर्भ मौजूद नहीं है। गार्बेज कलेक्टर क्लास उस ऑब्जेक्ट पर finalize फंक्शन को कॉल करती है जिसे नष्ट करने की आवश्यकता है।
आइसलैंड ऑफ आइसोलेशन क्या है?
जब दो ऑब्जेक्ट्स a और b एक-दूसरे को संदर्भित करते हैं, और वे किसी अन्य ऑब्जेक्ट द्वारा संदर्भित नहीं होते हैं, तो इसे आइसलैंड ऑफ आइसोलेशन के रूप में जाना जाता है।
यह ऑब्जेक्ट्स का एक समूह है जो एक-दूसरे को संदर्भित करते हैं लेकिन वे अन्य एप्लिकेशन्स के अन्य ऑब्जेक्ट्स द्वारा बिल्कुल भी संदर्भित नहीं होते हैं।
नोट - एक सिंगल अनरेफरेंस्ड ऑब्जेक्ट भी आइसलैंड ऑफ आइसोलेशन है।
आइए एक उदाहरण देखें:
उदाहरण
public class Demo{
Demo i;
public static void main(String[] args){
Demo my_ob_1 = new Demo();
System.out.println("डेमो ऑब्जेक्ट एक बनाया गया है");
Demo my_ob_2 = new Demo();
System.out.println("डेमो ऑब्जेक्ट दो बनाया गया है");
my_ob_1.i = my_ob_2;
my_ob_2.i = my_ob_1;
my_ob_1 = null;
my_ob_2 = null;
System.gc();
}
@Override
protected void finalize() throws Throwable{
System.out.println("ऑब्जेक्ट पर फाइनलाइज़ मेथड कॉल किया गया है");
}
}
आउटपुट
डेमो ऑब्जेक्ट एक बनाया गया है डेमो ऑब्जेक्ट दो बनाया गया है ऑब्जेक्ट पर फाइनलाइज़ मेथड कॉल किया गया है ऑब्जेक्ट पर फाइनलाइज़ मेथड कॉल किया गया है
Demo नामक एक क्लास में मुख्य फंक्शन होता है। यहां, Demo क्लास के प्रकार का एक वेरिएबल बनाया जाता है। Demo क्लास का एक इंस्टेंस बनाया जाता है और दूसरा ऑब्जेक्ट पहले ऑब्जेक्ट के Demo ऑब्जेक्ट को असाइन किया जाता है। वही विपरीत तरीके से दूसरे ऑब्जेक्ट के साथ भी किया जाता है। अब, इन दोनों ऑब्जेक्ट्स को null असाइन किया जाता है और System.gc फंक्शन को कॉल किया जाता है। अब, finalize फंक्शन को ओवरराइड किया जाता है।