जावा में कचरा संग्रह क्या है?
जावा में कचरा संग्रह एक ऐसी प्रक्रिया है जिसके द्वारा प्रोग्राम स्वचालित रूप से मेमोरी प्रबंधन करते हैं। कचरा संग्रहकर्ता (जीसी) अप्रयुक्त वस्तुओं को ढूंढता है और स्मृति को पुनः प्राप्त करने के लिए उन्हें हटा देता है। जावा में, ऑब्जेक्ट के डायनेमिक मेमोरी आवंटन को नए ऑपरेटर का उपयोग करके प्राप्त किया जाता है जो कुछ मेमोरी का उपयोग करता है और ऑब्जेक्ट के उपयोग के लिए संदर्भ होने तक मेमोरी आवंटित की जाती है।
जब किसी वस्तु का कोई संदर्भ नहीं होता है, तो यह माना जाता है कि अब इसकी आवश्यकता नहीं है, और ऑब्जेक्ट द्वारा कब्जा की गई स्मृति को पुनः प्राप्त किया जा सकता है। किसी ऑब्जेक्ट को नष्ट करने की कोई स्पष्ट आवश्यकता नहीं है क्योंकि जावा स्वचालित रूप से डी-आवंटन को संभालता है।
इसे पूरा करने वाली तकनीक को कचरा संग्रह के रूप में जाना जाता है । मेमोरी को डी-आवंटित नहीं करने वाले प्रोग्राम अंततः क्रैश कर सकते हैं जब आवंटित करने के लिए सिस्टम में कोई मेमोरी नहीं बची है। कहा जाता है कि इन कार्यक्रमों में मेमोरी लीक होती है।
जावा में कचरा संग्रह कार्यक्रम के जीवनकाल के दौरान स्वचालित रूप से होता है , स्मृति को डी-आवंटित करने की आवश्यकता को समाप्त करता है और जिससे मेमोरी लीक से बचा जाता है।
सी भाषा में, यह प्रोग्रामर की जिम्मेदारी है कि वह मुफ्त () फ़ंक्शन का उपयोग करके आवंटित मेमोरी को डी-आवंटित करें। यह वह जगह है जहाँ जावा मेमोरी प्रबंधन होता है।नोट: सभी ऑब्जेक्ट मेमोरी के हीप सेक्शन में बनाए गए हैं । बाद के ट्यूटोरियल में इस पर अधिक।
उदाहरण: जावा में कचरा कलेक्टर तंत्र जानने के लिए
चरण 1) निम्नलिखित कोड को एक संपादक में कॉपी करें।
कक्षा के छात्र {int a;इंट बी;सार्वजनिक शून्य सेटडाटा (इंट सी, इंट डी) {ए = सी;बी = डी;}सार्वजनिक शून्य प्रदर्शन () {System.out.println ("a =" + a) का मान;System.out.println ("b =" + b) का मान;}सार्वजनिक स्थैतिक शून्य main (String [] args[]){छात्र s1 = नया छात्र ();छात्र s2 = नया छात्र ();s1.setData (1,2);s2.setData (3,4);s1.showData ();s2.showData ();// छात्र s3;// s3 = s2;//s3.showData ();// s2 = null;//s3.showData ();// s3 = null;//s3.showData ();}}
चरण 2) कोड को सहेजें, संकलित करें और चलाएँ। जैसा कि आरेख में दिखाया गया है, दो ऑब्जेक्ट और दो संदर्भ चर बनाए जाते हैं।
चरण 3) Uncomment line # 20,21,22। कोड को सहेजें, संकलित करें और चलाएं।
चरण 4) जैसा कि नीचे दिए गए चित्र में दिखाया गया है, दो संदर्भ चर एक ही वस्तु की ओर इशारा करते हैं।
चरण 5) Uncomment line # 23 & 24. कोड को संकलित करें, सहेजें और चलाएँ
चरण 6) नीचे दिए गए आरेख में शो के रूप में, s2 शून्य हो जाता है, लेकिन s3 अभी भी ऑब्जेक्ट को इंगित कर रहा है और जावा कचरा संग्रह के लिए योग्य नहीं है।
चरण 7) Uncomment line # 25 & 26. कोड को सहेजें, संकलित करें और चलाएं
चरण 8) इस बिंदु पर ऑब्जेक्ट को इंगित करने वाले कोई संदर्भ नहीं हैं और कचरा संग्रह के लिए योग्य हो जाता है। इसे मेमोरी से हटा दिया जाएगा, और इसे वापस प्राप्त करने का कोई तरीका नहीं है।
जावा में किसी ऑब्जेक्ट को कैसे हटाएं?
1) यदि आप अपनी वस्तु को कचरा संग्रह के योग्य बनाना चाहते हैं, तो इसके संदर्भ चर को शून्य में सौंप दें।
2) आदिम प्रकार ऑब्जेक्ट नहीं हैं। उन्हें अशक्त नहीं ठहराया जा सकता।