AddMemoryPressure का बिंदु कचरा कलेक्टर को बताना है कि उस वस्तु के साथ आवंटित स्मृति की एक बड़ी मात्रा है। यदि यह अप्रबंधित है, तो कचरा कलेक्टर इसके बारे में नहीं जानता है; केवल प्रबंधित हिस्सा। चूंकि प्रबंधित भाग अपेक्षाकृत छोटा है, जीसी इसे कई बार कचरे के संग्रह के लिए पास कर सकता है, अनिवार्य रूप से स्मृति को बर्बाद कर सकता है जिसे मुक्त करने की आवश्यकता हो सकती है।
हाँ, आप अब भी आवंटित और अप्रबंधित स्मृति पुनःआवंटन किया है। आप इससे दूर नहीं जा सकते हैं। आप यह सुनिश्चित करने के लिए केवल AddMemoryPressure का उपयोग करें कि जीसी जानता है कि यह वहां है।
संपादित करें:
ठीक है, मामले में, मैं यह कर सकता है, लेकिन यह कोई बहुत फ़र्क पड़ता है चाहते हैं, के रूप में जीसी मेरी प्रकार के बारे में एक बात करने के लिए सक्षम नहीं होगा , अगर मैं इसे सही ढंग से समझता हूं: 1) मैं अपने चर, 8 प्रबंधित बाइट्स, 2 एमबी अप्रबंधित बाइट घोषित करता हूं। मैं इसका उपयोग करता हूं, निपटान कहता हूं, इसलिए अप्रबंधित स्मृति मुक्त हो जाती है। अभी यह केवल 8 बाइट्स ओकप्पी होगा। अब, मेरी आंखों के लिए, अंत में भिखारी AddMemoryPressure और RemoveMemoryPressure में बुलाए जाने से कुछ भी अलग नहीं होता। मुझे क्या गलत हो रहा है? इस बारे में बहुत परेशान होने के लिए खेद है। - जॉर्ज ब्रैंको
मुझे लगता है कि मुझे आपकी समस्या दिखाई दे रही है।
हां, अगर आप गारंटी दे सकते हैं कि आप हमेशा Dispose
पर कॉल करते हैं, तो हाँ, आपको AddMemoryPressure और RemoveMemoryPressure से परेशान करने की आवश्यकता नहीं है। कोई समानता नहीं है, क्योंकि संदर्भ अभी भी मौजूद है और प्रकार कभी एकत्र नहीं किया जाएगा।
उसने कहा, आप अभी भी पूर्णता के लिए AddMemoryPressure और RemoveMemoryPressure का उपयोग करना चाहते हैं। क्या होगा, उदाहरण के लिए, आपकी कक्षा का उपयोगकर्ता निपटान करना भूल गया?उस स्थिति में, मान लीजिए कि आपने निपटान पैटर्न को सही तरीके से कार्यान्वित किया है, तो आप अंतिम रूप से अपने अप्रबंधित बाइट्स को पुनः प्राप्त कर देंगे, यानी जब प्रबंधित ऑब्जेक्ट एकत्र किया जाता है। उस स्थिति में, आप चाहते हैं कि स्मृति दबाव अभी भी सक्रिय हो, ताकि ऑब्जेक्ट को पुनः दावा करने की अधिक संभावना हो।
ठीक है, जिसने सवाल का जवाब नहीं दिया, lol। –
मैंने लगभग बिल्कुल कहा कि स्टीवन लियोन ने क्या कहा, केवल एक अलग तरीके से। इस सवाल का जवाब कैसे नहीं दिया? – Randolpho
ठीक है, वास्तव में मैंने इसे फिर से पढ़ा और मेरी पोस्ट संपादित की। –