गार्बेज कलेक्टर (GC) - स्वचालित मेमोरी प्रबंधन
गार्बेज कलेक्टर मेमोरी के आवंटन और रिलीज़ को प्रबंधित करता है। यह एक स्वचालित मेमोरी मैनेजर के रूप में कार्य करता है।
मुख्य बिंदु:
- मैन्युअल मेमोरी प्रबंधन की आवश्यकता नहीं: आपको मेमोरी आवंटित/मुक्त करने या ऑब्जेक्ट लाइफटाइम प्रबंधित करने की चिंता नहीं करनी पड़ती
- आवंटन: जब भी आप
newकीवर्ड से ऑब्जेक्ट बनाते हैं या वैल्यू टाइप बॉक्स होता है, आवंटन होता है। आवंटन आमतौर पर बहुत तेज़ होता है - कलेक्शन ट्रिगर: जब नए आवंटन के लिए पर्याप्त मेमोरी नहीं होती, तो GC गार्बेज मेमोरी को कलेक्ट और डिस्पोज़ करता है
- गार्बेज कलेक्शन: यह प्रक्रिया अनुपयोगी ऑब्जेक्ट्स की मेमोरी को पुनः प्राप्त करती है
लाभ:
- एप्लिकेशन विकसित करते समय मैन्युअल रूप से मेमोरी मुक्त करने की आवश्यकता नहीं
- मैनेज्ड हीप पर ऑब्जेक्ट्स को कुशलता से आवंटित करता है
- अनुपयोगी ऑब्जेक्ट्स की मेमोरी क्लियर करके भविष्य के आवंटन के लिए उपलब्ध कराता है
- मैनेज्ड ऑब्जेक्ट्स ऑटोमैटिकली क्लीन कंटेंट से शुरू होते हैं, इसलिए कंस्ट्रक्टर्स को हर डेटा फील्ड इनिशियलाइज़ करने की आवश्यकता नहीं
जनरेशंस:
GC जनरेशन-बेस्ड है:
- Gen 0: छोटे, अल्पकालिक ऑब्जेक्ट्स (सबसे फ्रीक्वेंट कलेक्शन)
- Gen 1: मध्यम जीवनकाल के ऑब्जेक्ट्स
- Gen 2: दीर्घकालिक ऑब्जेक्ट्स (कम फ्रीक्वेंट कलेक्शन)
- LOH (Large Object Heap): 85KB+ ऑब्जेक्ट्स
बेस्ट प्रैक्टिस:
IDisposableपैटर्न का उपयोग अनमैनेज्ड रिसोर्सेज के लिए करेंGC.Collect()मैन्युअली कॉल न करें (दुर्लभ अपवादों को छोड़कर)- फाइनलाइज़र्स (
~ClassName()) से बचें जब तक आवश्यक न हो