कचरा संग्रह - Garbage Collection का क्या मतलब है?

कचरा संग्रह, .NET के संदर्भ में, वह प्रक्रिया है जिसके द्वारा .NET फ्रेमवर्क का कॉमन लैंग्वेज रनटाइम (CLR) मेमोरी को स्वचालित रूप से आवंटित और जारी करके मेमोरी का प्रबंधन करता है।

.NET का गारबेज कलेक्टर मेमोरी को इस तरह से कॉम्पैक्ट करने की कोशिश करता है जिससे हीप के लिए जरूरी वर्किंग स्पेस को बढ़ाया जा सके। .NET क्लास लाइब्रेरी का क्लास GC कचरा संग्रहकर्ता को नियंत्रित करता है। संग्रह करने का मुख्य कार्य जीसी के अनुकूलन इंजन द्वारा निष्पादित किया जाता है जो आवंटन के आधार पर संग्रह करने का सर्वोत्तम समय निर्धारित करता है। जीसी रन गैर-नियतात्मक हैं क्योंकि जीसी को कॉल की गारंटी नहीं दी जा सकती है। हालाँकि, क्लास GC के ओवरलोडेड 'कलेक्ट ()' मेथड के लिए स्पष्ट कॉल का उपयोग जब भी आवश्यकता हो, किया जा सकता है।

जीसी प्रदान करने वाले लाभों में शामिल हैं:

  • अनुप्रयोगों में मेमोरी डी-आवंटन कोड का उन्मूलन
  • प्रबंधित ढेर में अनुकूलित स्मृति उपयोग
  • पुन: दावा की गई वस्तुओं की स्मृति को साफ़ करना जो अब उपयोग में नहीं हैं (जो भविष्य में आवंटित प्रबंधित वस्तुओं को प्रारंभ करने में मदद करता है और किसी अन्य की सामग्री का उपयोग करने वाली वस्तु से बचने के लिए वस्तुओं की स्मृति सुरक्षा का प्रावधान करता है।)

जीसी प्रबंधित हीप पर वर्चुअल मेमोरी का प्रबंधन करता है, जो एक प्रबंधित प्रक्रिया में बनाई गई वस्तुओं को संग्रहीत और प्रबंधित करने के लिए उपयोग किया जाने वाला मेमोरी सेगमेंट है। यदि किसी वस्तु का कोई संदर्भ नहीं है और उस तक पहुँचा या उपयोग नहीं किया जा सकता है, तो वह कचरा बन जाती है। जबकि GC एक अलग थ्रेड में एक संग्रह करता है, सभी अनुपयोगी वस्तुओं की गणना की जाती है और उन्हें आवंटित की गई मेमोरी को पुनः प्राप्त किया जाता है।

कचरा संग्रह ऐसी स्थितियों में निष्पादित किया जाता है जैसे जब सिस्टम में भौतिक मेमोरी कम होती है या जहां प्रबंधित हीप में आवंटित मेमोरी स्वीकार्य थ्रेशोल्ड मान से अधिक हो जाती है। चूंकि GC को समय-समय पर निष्पादित किया जाता है, आमतौर पर GC.Collect() विधि को कॉल करने की आवश्यकता नहीं होती है।

जिन दो विकल्पों में जीसी को सीएलआर को निष्पादित करने की आवश्यकता के तरीके को निर्दिष्ट करने के लिए कॉन्फ़िगर किया जा सकता है वे हैं 1) वर्कस्टेशन और 2) सर्वर कचरा संग्रह। दोनों के बीच मुख्य अंतर यह है कि पूर्व उपयोगकर्ता थ्रेड में होता है जो GC को ट्रिगर करता है जबकि बाद वाला सर्वोच्च प्राथमिकता स्तर पर चलने वाले थ्रेड्स पर होता है। साथ ही, वर्कस्टेशन GC का उपयोग हमेशा सिंगल प्रोसेसर वाले सिस्टम पर किया जाता है जबकि सर्वर GC बड़े आकार के सेगमेंट के साथ संसाधन गहन होता है और कई प्रोसेसर वाले सिस्टम में उपयोग किया जाता है।

दो प्रकार के संभावित संग्रह पूर्ण और आंशिक प्रकार हैं। प्रोग्राम के निष्पादन को रोककर और प्रत्येक ऑब्जेक्ट पर जाकर, उसके ऑब्जेक्ट पॉइंटर का अनुसरण करके और ऑब्जेक्ट को पहुंच योग्य (या लाइव) या अगम्य (या निंदित) के रूप में चिह्नित करके एक पूर्ण संग्रह निष्पादित किया जाता है। वस्तुओं का दौरा करने के बाद, अगम्य वस्तुओं की स्मृति को पुनः प्राप्त किया जाता है और जीवित वस्तुओं को स्लाइड किया जाता है ताकि आवंटित स्मृति बिना किसी अपशिष्ट स्थान के सन्निहित हो। आंशिक संग्रह केवल ढेर का एक हिस्सा खोजता है और इसका उपयोग तब किया जाता है जब पूरा संग्रह महंगा पाया जाता है।

जीसी की सीमा यह है कि यह उन अप्रयुक्त वस्तुओं को जारी नहीं करता है जो अभी भी संदर्भित हैं, जिससे मेमोरी लीक हो सकती है।

Post a Comment

0 Comments