2011-11-10 17 views
6

पिछले कुछ दिनों से एक बिंदु मेरे दिमाग में सोच रहा है। मैं जानना चाहता हूं कि कैसे कचरा कलेक्टर स्थिर कक्षाओं, चर के साथ काम करता है?कचरा कलेक्टर और स्थैतिक वर्ग, परिवर्तनीय

जैसा कि हम सभी जानते हैं कि कचरा कलेक्टर उन वस्तुओं का ट्रैक रखता है जो एप्लिकेशन में बनाए गए हैं और जब वे उपयोग में नहीं हैं तो उन्हें स्वचालित रूप से हटा दिया जाता है। स्थैतिक वर्ग के लिए कोई ऑब्जेक्ट नहीं बनाया गया है और यह एप्लिकेशन डीबग के साथ मेमोरी में लोड किया गया है।

तो कचरा कलेक्टर स्थिर वर्गों को संभालता है?

उत्तर

9

स्टेटिक वर्गों को हटाए जाने की आवश्यकता नहीं है क्योंकि वे ऑब्जेक्ट नहीं हैं और वे स्मृति का उपभोग नहीं करते हैं (.NET आधारभूत संरचना द्वारा लोड किए जाने वाले वास्तविक वर्ग कोड के अलावा)। दूसरी तरफ स्थैतिक वर्गों में स्थिर क्षेत्र वे वस्तुएं हैं जो स्मृति का उपभोग करते हैं। वे एकत्र नहीं किए जाएंगे क्योंकि वे आवेदन के पूरे जीवनकाल के लिए सुलभ हैं। यदि आप मेमोरी को मुक्त करना चाहते हैं तो आपको फ़ील्ड को शून्य पर सेट करना चाहिए ताकि ऑब्जेक्ट फ़ील्ड जीसी

+0

ठीक है, आपका मुद्दा यह है कि कचरा कलेक्टर कभी नहीं स्थैतिक फ़ील्ड या चर जारी करता है जिसका मतलब है कि वे हमेशा स्मृति में लोड होते हैं। तो यह कहने का अधिकार होगा कि स्थैतिक केवल वैश्विक स्थिरता या चर के लिए बनाया जाना चाहिए? –

+3

एक अपवाद है: नेट 4 में, आप एकत्रित असेंबली प्राप्त कर सकते हैं। और यदि एक असेंबली कचरा इकट्ठा किया जाता है, तो इस असेंबली में प्रकार के स्थिर क्षेत्र जीसी जड़ें बंद हो जाते हैं, इसलिए जिन वस्तुओं को वे संदर्भित करते हैं उन्हें एकत्र किया जा सकता है। – svick

+0

@svick जो काफी दिलचस्प है धन्यवाद। इसके अलावा यह ध्यान देने योग्य हो सकता है कि कक्षा कक्षाओं के पहले स्थान पर पहुंचने पर और जब कार्यक्रम शुरू नहीं होता है तो स्थैतिक वर्गों के क्षेत्र को तत्काल कर दिया जाता है। – Stilgar

1

वह उन्हें कभी भी रिलीज़ नहीं करेगा। (उदाहरण के लिए आईआईएस में पुन: प्रारंभ होने तक वेब में)।

वे कभी कहूँगा: "कोई मुझे संदर्भित कर रहा है तो मैं जाने के लिए स्वतंत्र हूँ"

भी

आप स्टेटिक कक्षा के लिए नया कभी नहीं कर सकते हैं .... इसलिए इसके प्रयोग है केवल कक्षा वस्तु द्वारा (उदाहरण नहीं)।

तो .NET कोई मौका नहीं लेता है और इसे जीसी से बाहर नहीं रखता है।

+0

रिवर्ट रॉय के लिए धन्यवाद के लिए योग्य हो गया है, तो मुझे आपकी बात मिली है –

संबंधित मुद्दे