2008-10-06 11 views
11

मैंने सोचा होगा कि यह स्पष्ट होगा कि देशी कोड की तुलना में प्रबंधित कोड में मेमोरी आवंटन तेज है या नहीं - but there seems to be some controversy। शायद वर्चुअल मशीन के तहत मेमोरी प्रबंधन ओएस को कोई संदर्भ-स्वैपिंग कॉल की वजह से तेज़ी से नहीं है, लेकिन फिर मुझे लगता है कि वीएम को ओएस को अधिक मेमोरी के लिए आवधिक कॉल करने की आवश्यकता होगी, और यह प्रबंधन मेमोरी को ओवरहेड करता है ओएस के बजाए।नेट कोड की तुलना में प्रबंधित कोड में .NET मेमोरी प्रबंधन तेजी से है?

मेरे जैसे असंबद्ध दावे बनाने की बजाय, कृपया अपनी स्थिति का समर्थन करने वाले संदर्भों के लिंक प्रदान करें।

उत्तर

6

http://msdn.microsoft.com/en-us/library/ms973852.aspx

का रीड ले लो यह कुछ विवरण में चला जाता है कैसे .NET में स्मृति आवंटन काम करता है और संक्षेप में इसे सी ++ मॉडल से तुलना करता है।

संक्षेप में, .NET में स्मृति आवंटन में ऑब्जेक्ट के पते के रूप में वर्तमान स्टैक पॉइंट को पकड़ना और ऑब्जेक्ट का डेटा आकार स्टैक पॉइंटर में जोड़ना शामिल है। सी ++ तुलनात्मक रूप से ऑब्जेक्ट के लिए पर्याप्त ढेर के क्षेत्र के लिए मुक्त पॉइंटर्स की एक सूची के माध्यम से खोजना है। ज्यादातर मामलों में, .NET तेज होगा।

+0

क्या यह कभी-कभी बढ़ते ढेर का नेतृत्व नहीं करेगा? और विखंडन ढेर? – Josh

+0

जोश, जहां कचरा संग्रह आता है। यह ढेर से डी-रेफरेंस किए गए ऑब्जेक्ट्स को हटा देता है, फिर सभी शेष वस्तुओं को एक बार फिर उपयोग की गई स्मृति का एक संगत ब्लॉक बनाने के लिए ले जाता है, फिर नए सूचक मूल्यों के साथ सभी प्रभावित संदर्भ अपडेट करता है। –

+0

तो स्मृति आवंटन प्रबंधित कोड में तेज़ है, लेकिन कभी-कभार कचरा संग्रह घटनाओं की धीमीता व्यापार-बंद है। –

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