यदि आप स्थिर तरीकों में चर द्वारा संदर्भित वस्तुओं के साथ क्या होता है, तो उन वस्तुओं को कचरे के संग्रह के लिए समझदार हो जाता है जब वे अब दायरे में नहीं होते हैं।
यदि आप स्थैतिक क्षेत्रों द्वारा संदर्भित वस्तुओं के बारे में बात कर रहे हैं तो ये सरल शब्दों में तब तक एकत्र नहीं किए जाएंगे जब तक कि संदर्भ शून्य पर सेट न हों।
निम्न उदाहरण इस बेहतर उदाहरण देकर स्पष्ट करना हो सकता है: जब वर्ग भरी हुई है और के रूप में वर्ग उदाहरण की वस्तुओं बनाया है और नष्ट कर रहे हैं यहां तक कि निहित रहेगा
class Example
{
private static object field1 = new object();
public static void SomeMethod()
{
object variable1 = new object();
// ...
}
public static void Deref()
{
field1 = null;
}
}
वस्तु द्वारा फ़ील्ड 1 संदर्भित बनाया जाएगा। एकत्रित ऑब्जेक्ट कचरा रखने का एकमात्र तरीका डेफ() विधि को कॉल करना होगा जो शून्य के संदर्भ को सेट करके इसे अस्वीकार कर देगा। (असल में, ऐप डोमेन को अनलोड करके कक्षाओं को अनलोड करना संभव है लेकिन यह कुछ और अधिक उन्नत है और ऐसा कुछ भी नहीं है जो आप अक्सर उस समय आने की संभावना रखते हैं।)
इसके विपरीत, स्थैतिक विधि SomeMethod() एक ऑब्जेक्ट और संदर्भ बनाता है यह परिवर्तनीय चर 1 द्वारा। जैसे ही यह दायरे से बाहर हो जाता है (विधि के अंत में) कचरा संग्रह के लिए यह वस्तु समझदार है। प्रैक्टिक रूप से, इसे पहले एकत्र किया जा सकता है यदि विधि का शेष इसका संदर्भ नहीं देता है।
स्रोत
2009-11-30 17:54:40