2010-02-03 15 views
7

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

+0

एक बहुत अच्छा स्वीकार किए जाते हैं जवाब के साथ एक समान प्रश्न के लिए यहाँ देखें http://stackoverflow.com/questions/400706/circular-references -कॉज-मेमोरी-रिसाव –

+0

@ डेविड: एजेड ने कहा कि यह संदर्भ संदर्भ गणना का उपयोग नहीं करता है। –

+0

@ जोहान्स: यह मेरी टिप्पणी में एक टाइपो था, मेरा मतलब था कि प्रश्न (जवाब नहीं) प्रारंभिक प्रश्न यह था कि सीएलआर में संदर्भ गिनती के उपयोग से चक्र असुरक्षित हो गए थे। प्रश्न (एजेड द्वारा जवाब नहीं) इस बारे में गलत था कि सीएलआर जीसी कैसे करता है। –

उत्तर

11

नेट कचरा कलेक्टर एक पीढ़ीगत निशान और झाडू कलेक्टर है। यह संदर्भ गिनती का उपयोग नहीं करता है। तो हाँ, परिपत्र संदर्भ होना सुरक्षित है। भाषा अप्रासंगिक

+1

बस एक स्थिर के संदर्भ को पारित करने से बचने के लिए बहुत सावधान रहें और यह भी याद रखें कि प्रतिनिधियों को उस वस्तु के संदर्भ के रूप में गिना जाएगा, जिस पर वे लागू किए गए हैं। एक स्थिर घटना हैंडलर सूची जैसी चीजों के साथ चीजों को जीवित रखना बहुत आसान है। – morechilli

3

इस लेख के अनुसार है: https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5109829.html

परिपत्र संदर्भ कोई समस्या उत्पन्न होती है कि जब वहाँ दो वस्तुओं है कि अन्य प्रत्येक का उल्लेख कर रहे हैं। आइए मान लें कि आपके पास कक्षा ए है कक्षा बी को संदर्भित करता है। यदि कक्षा बी भी कक्षा ए को संदर्भित करता है, तो हमारे पास परिपत्र संदर्भ है। यह कई स्थितियों में होता है। के लिए एक सामान्य उदाहरण यह माता-पिता-बच्चे संबंध ऑब्जेक्ट्स के बीच है, जहां बच्चे मूल ऑब्जेक्ट के साथ इंटरैक्ट करता है और में माता-पिता ऑब्जेक्ट का संदर्भ भी है। यह ऑब्जेक्ट्स का कारण बन सकता है जो तक साफ़ नहीं किया जाएगा, एप्लिकेशन बंद हो गया था। कचरा संग्रह का .NET तरीका सर्कुलर संदर्भ की समस्या हल करता है क्योंकि कचरा कलेक्टर किसी भी ऑब्जेक्ट को साफ़ करने के लिए रूट से पहुंचने योग्य है।

संपादित करें:
इस पोस्ट से आंकना: http://blogs.msdn.com/abhinaba/archive/2009/01/27/back-to-basics-reference-counting-garbage-collection.aspx यह है कि नेट के कचरा संग्रहण कचरा संग्रहण के लिए संदर्भ गिनती पर आधारित नहीं है लगता है।

एक अन्य लेख को पढ़ने के लायक (विस्तार से कचरा संग्रहण बताते हैं) इस एक है: http://www.simple-talk.com/dotnet/.net-framework/understanding-garbage-collection-in-.net/

+2

"यह रूट से पहुंच योग्य नहीं है" –

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