क्या यह संभव है कि कचरा कलेक्टर काम पर पठनीय रूप से संशोधक प्रभाव? मूल्य प्रकार के लिए, संदर्भ प्रकार के लिए?कचरा कलेक्टर पर पाठक रूप से संशोधक प्रभाव करता है?
उत्तर
मैं देख नहीं क्यों यह सामान्य रूप से उपयोग जीसी को प्रभावित करना चाहिए। यह सिर्फ एक क्षेत्र है। और जीसी बस संदर्भ प्रकार फ़ील्ड (या संरचना क्षेत्रों में निहित संदर्भ) का पालन करता है।
आप जहां यह जीसी प्रभावित करती है कृत्रिम स्थितियों का निर्माण करने में सक्षम हो सकता है (शायद केवल पढ़ने के लिए मैदान के बचाव की मुद्रा में प्रतियां कोस), लेकिन यह सामान्य उपयोग के साथ घटित नहीं होगा।
और निश्चित रूप से आप Dispose
जैसी विधि में फ़ील्ड को शून्य में सेट नहीं कर सकते हैं, जो उपयोगी हो सकता है यदि आप महंगी स्वामित्व वाली वस्तुएं जीसी के लिए तैयार करना चाहते हैं जबकि कुछ वस्तु के संदर्भ में कुछ है।
एक कार्यक्रम व्यवहार को बदलने की बुराई नमूना readonly
इस कार्यक्रम की वजह से पता चलता है कि अभी नहीं केवल पढ़ने से कोई फ़ील्ड को बदलने केवल पढ़ने के लिए अन्यथा समान कोड के साथ एक वस्तु के संग्रह को रोका जा सकता। यह इस बात का दुरुपयोग करता है कि लिखने योग्य क्षेत्र में Obj फ़ील्ड शून्य को सेट करने के लिए विधिवत आमंत्रण पर एक पाठक क्षेत्र की प्रतिलिपि बनाई जाती है और संदर्भ को पाठक संरचना में रखें। चूंकि यह संदर्भ को शून्य होने से रोकता है, यह वस्तु को एकत्र होने से रोकता है।
लेकिन निश्चित रूप से यह जीसी को स्वयं प्रभावित नहीं करता है। लेकिन बदले में पढ़ने के साथ एक अलग ऑब्जेक्ट ग्राफ बनाने के लिए केवल पढ़ने के अर्थशास्त्र का दुरुपयोग करता है। तो जेरेड का बयान अभी भी पूरी तरह से सच है।
struct EvilStruct
{
public readonly object Obj;
public void SetToNull()
{
this=new EvilStruct();
}
public EvilStruct(object obj)
{
Obj=obj;
}
}
readonly EvilStruct s1=new EvilStruct(new object());
EvilStruct s2=new EvilStruct(new object());
void Main()
{
s1.SetToNull();
s2.SetToNull();
s1.Obj.Dump();//An instance of System.Object
s2.Obj.Dump();//null
//now s1.Obj can't be collected, but what was once in s2.Obj can
}
का संभावित डुप्लिकेट यह नहीं है। केवल क्षेत्र को ही संशोधित करता है जो यह इंगित करता है कि यह क्या इंगित करता है। वस्तु किसी बिंदु पर एकत्र की जाएगी जब यह अब रूट नहीं है। –
एक ऐसे कार्यक्रम का एक उदाहरण मिला जहां एक पाठक वस्तु को एकत्र होने से रोकता है। – CodesInChaos
सबसे अच्छा यह प्रोग्राम दिखाता है कि आपने इसे संकलित करने के लिए परेशान नहीं किया है, क्योंकि 'ऑब्जेक्ट' में कोई 'डंप' विधि नहीं है। साथ ही, आप 'मुख्य' फ़ंक्शन स्थिर नहीं हैं, और यदि ऐसा होता है, तो आप 's1' और' s2' तक नहीं पहुंच सकते हैं। –
नहीं, ऐसा नहीं है। जीसी उन वस्तुओं के लिए स्मृति को पुनः प्राप्त करके काम करता है जो किसी भी मूल वस्तु से पहुंच योग्य नहीं हैं। पाठक रूप से संशोधक इस प्रक्रिया पर कोई प्रभाव नहीं पड़ता है। दो ऑब्जेक्ट ग्राफ़ जो कि कुछ पठनीय फ़ील्ड वाले अपवाद के समान थे, उसी फैशन में एकत्र किए जाएंगे।
readonly
एक सी # विशेषता है। जीसी एक सीएलआई सुविधा है। इसलिए, यह सभी पर जीसी को प्रभावित नहीं कर सकता है।
- 1. Node.js 'कचरा कलेक्टर
- 2. कंज़र्वेटिव कचरा कलेक्टर
- 3. LogManager और कचरा कलेक्टर
- 4. कचरा कलेक्टर कॉल निपटान()?
- 5. ग्रहण: कचरा कलेक्टर बटन
- 6. v8 | कचरा कलेक्टर मैन्युअल रूप से शुरू करें
- 7. कचरा कलेक्टर कौन सा ऑब्जेक्ट साफ़ नहीं करता है?
- 8. कचरा कलेक्टर यूनिट परीक्षणों के साथ कैसे काम करता है?
- 9. सीएमएस कचरा कलेक्टर - यह कब चलता है?
- 10. .NET कचरा कलेक्टर की क्षमता
- 11. पायथन: कचरा कलेक्टर का व्यवहार
- 12. जावा कचरा कलेक्टर - यह कब एकत्र करता है?
- 13. कचरा कलेक्टर और वृत्तीय संदर्भ
- 14. जावा संग्रह और कचरा कलेक्टर
- 15. जावा धागे और कचरा कलेक्टर
- 16. कचरा कलेक्टर का उपयोग कितना समय है?
- 17. क्या सी ++ में कचरा कलेक्टर है?
- 18. क्या उद्देश्य-सी में आईफोन पर कचरा कलेक्टर है?
- 19. ऐसी पीढ़ी कलेक्टरों के रूप में एक चलती कचरा कलेक्टर
- 20. .NET 4 कचरा कलेक्टर की मापनीयता
- 21. कचरा कलेक्टर और स्थैतिक वर्ग, परिवर्तनीय
- 22. जावास्क्रिप्ट/कचरा कलेक्टर में परिपत्र संदर्भ
- 23. नेट कचरा कलेक्टर - देखें कि रनटाइम
- 24. .NET कचरा कलेक्टर और x64 वर्चुअल मेमोरी
- 25. जावा का सीरियल कचरा कलेक्टर अन्य कचरा कलेक्टरों से कहीं बेहतर प्रदर्शन कर रहा है?
- 26. क्या कचरा कलेक्टर जावा में स्थैतिक चर या विधियों पर काम करता है?
- 27. .NET कचरा कलेक्टर की आंतरिक कार्यप्रणाली?
- 28. JRuby - कचरा कलेक्टर कैसे शुरू करें?
- 29. जावा अज्ञात वर्ग और कचरा कलेक्टर
- 30. रूबी में कचरा कलेक्टर ट्यूनिंग 1.9
http://stackoverflow.com/questions/1152573/does-readonly-c-reduce-memory-usage –