19

क्या WinRT में कचरा संग्रह है?क्या WinRT में कचरा संग्रह है?

या क्या यह COM के रूप में संदर्भ गणना करता है?

+1

हाँ WinRT के पास कुछ प्रकार का कचरा संग्रह है, और अधिक दिलचस्प सवाल यह है कि यह किस प्रकार है? (संदर्भ गिनती एक वैध प्रकार का कचरा संग्रह है यदि यह प्रोग्रामर से अच्छी तरह छुपा हुआ है जैसे वीबी 6, बल्कि फिर एटीएल) –

+0

* "क्या WinRT में कचरा संग्रह है?" * - हाँ। * "या क्या यह संदर्भ गणना करता है जैसे COM करता है?" * - वह भी कचरा संग्रह है। ऐसा लगता है कि [हर कोई कचरा संग्रह गलत तरीके से सोचता है] (https://blogs.msdn.microsoft.com/oldnewthing/20100809-00/?p=13203): * "कचरा संग्रह ** एक कंप्यूटर को सिमुलेट कर रहा है स्मृति की अनंत राशि ** [द्वारा] प्रोग्राम को याद नहीं किया जाएगा कि प्रोग्राम गुम हो गया था। "* – IInspectable

उत्तर

23

मैं this article पाया है, जो माइक्रोसॉफ्ट के Martyn Lovell हवाला देते हैं: "। WinRT वस्तुओं कमजोर संदर्भों के साथ स्मृति प्रबंधन, के लिए COM जैसे गिने जाते हैं संदर्भ घेरा से बचने के लिए"

जाहिर है इस BUILD convention पर WinRT internals पर उनकी बात पर उल्लेख किया गया था।

+8

एक साइड नोट के रूप में, जबकि यह थोड़े स्पष्ट है, यह अभी भी स्पष्ट करने योग्य है कि WinRT का उपयोग कर एक .NET ऐप में अभी भी जीसी चल रहा है जो .NET ऑब्जेक्ट्स को संभालेगा। इसी प्रकार, जेएस के पास अपनी वस्तुओं के लिए जीसी है। यह केवल WinRT ऑब्जेक्ट्स हैं जिन्हें refcounted हैं। –

+0

.NET के नीचे Win32 और COM है जो भी refcounted हैं। यह बताते हुए कि .NET को पुन: गणना की गई है क्योंकि यह बताएगा कि मेट्रो सी ++/सीएलआई (-श) अनुप्रयोगों को पुन: गणना की जाती है। – dalle

+4

@dalle .NET के नीचे कोई COM नहीं है, इस अर्थ में कि .NET ऑब्जेक्ट COM ऑब्जेक्ट्स नहीं हैं। हालांकि, WinRT ऑब्जेक्ट _are_ COM ऑब्जेक्ट्स - वे 'अज्ञात' को लागू करते हैं। और, हां, नए/जेडब्ल्यू कंपाइलर सिंटैक्स का उपयोग करते हुए मेट्रो सी ++ ऐप्स में, 'रेफ क्लास' प्रकारों के उदाहरण _are_ को 'एड्रफ'/'रिलीज' का उपयोग करके refreounted। तो तार हैं, हालांकि उनके पास अपने स्वयं के reffounting कार्यों है। '/ FAs' के साथ संकलित करें और स्वयं के लिए देखें। –

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