मैंने पढ़ा है कि प्रबंधित ढेर में पिनिंग ऑब्जेक्ट्स .NET में जीसी प्रदर्शन को प्रभावित करता है, क्योंकि जीसी "रास्ते में" पिन किए गए ऑब्जेक्ट्स मेमोरी को कॉम्पैक्ट नहीं कर सकता है। लेकिन चूंकि बड़े ऑब्जेक्ट ढेर को किसी भी तरह से संकलित नहीं किया जाता है, इसलिए यह LOH में ऑब्जेक्ट्स पर लागू नहीं होना चाहिए। क्या LOH में किसी ऑब्जेक्ट को पिन करने की कोई और छिपी हुई लागत है? या क्या मैं जीसी प्रदर्शन को कम किए बिना LOH में वस्तुओं को सुरक्षित रूप से पिन कर सकता हूं?क्या LOH में किसी ऑब्जेक्ट को पिन करना जीसी प्रदर्शन को प्रभावित करता है?
उत्तर
ठीक है, क्योंकि बड़े ऑब्जेक्ट हीप (LOH) को कॉम्पैक्ट नहीं किया गया है इसका मतलब यह नहीं है कि एकत्र नहीं किया गया है। The LOH is collected और किसी ऑब्जेक्ट को पिन करने से भविष्य के आवंटन पर रैमिकेशन होगा।
क्योंकि किसी ऑब्जेक्ट को पिन किया जाता है, यह LOH में उपलब्ध स्मृति की मात्रा को प्रभावी रूप से कम करता है (जैसा कि आप संदर्भ रखते थे)। जब एक बड़ी वस्तु आवंटित करने का एक और अनुरोध किया जाता है, यदि LOH में बहुत अधिक पिन किए गए/आयोजित संदर्भ हैं, तो आप अधिक बड़ी वस्तुओं को आवंटित करने वाले मुद्दों में भाग ले सकते हैं।
जब एक निशान कचरा संग्रहण का निशान और झाडू भाग के दौरान किया जाता है, CLR शायद सभी संदर्भ जड़ों के रूप में पिन किए गए होते निशान तो वहाँ शायद संग्रह के इस भाग के दौरान कोई प्रभाव नहीं है, अगर कोई बड़ी वस्तु का संदर्भ रखता है तो यह वही व्यवहार करेगा।
चूंकि डोलोकेशन LOH पर समान होता है (ब्लॉक को बस उपलब्ध होने के रूप में टैग किया जाता है), यह ऑपरेशन या तो प्रभावित नहीं होता है।
और आखिरकार, चूंकि LOH कॉम्पैक्ट नहीं किया गया है, इसलिए यह ऑपरेशन कभी भी जीसी के दौरान इस ढेर पर नहीं होता है, इसलिए यह यहां प्रभावित नहीं होता है।
संक्षेप में, LOH पर आवंटन निश्चित रूप से LOH पर ऑब्जेक्ट्स के संदर्भ पिनिंग से प्रभावित हो सकता है, जबकि LOH पर संग्रह अधिकतर नहीं हैं।
हालांकि यह नहीं भूलना चाहिए कि स्मृति के बड़े ब्लॉक आवंटित करने और धारण करने से सामान्य रूप से सिस्टम पर रैमिकेशंस हो सकते हैं, ये टिप्पणियां सख्ती से LOH के बारे में हैं।
- 1. क्या obfuscation प्रदर्शन को प्रभावित करता है?
- 2. ऑब्जेक्ट.ब्सर्व() प्रदर्शन को कैसे प्रभावित करता है?
- 3. फेविकॉन 404 प्रदर्शन को प्रभावित करता है
- 4. क्या अर्धविराम छोड़ना जावास्क्रिप्ट में प्रदर्शन को प्रभावित करता है?
- 5. क्या तालिका का आकार INSERT प्रदर्शन को प्रभावित करता है?
- 6. क्या .NET असेंबली आकार प्रदर्शन को प्रभावित करता है?
- 7. विधि कॉल जावा में प्रदर्शन को कैसे प्रभावित करता है?
- 8. कैश समेकन इस मामले में प्रदर्शन को प्रभावित करता है
- 9. सिल्वरलाइट में किसी ऑब्जेक्ट को स्मृति में "पिन" क्या कर सकता है?
- 10. क्या कचरा संग्रह कभी ढेर को प्रभावित करता है?
- 11. क्या बहुत सारे बंडल लोड करना सिम्फनी 2 एप्लिकेशन के समग्र प्रदर्शन को प्रभावित करता है?
- 12. क्या कुंजी की लंबाई शब्दकोश प्रदर्शन को प्रभावित करती है?
- 13. NUMA आर्किटेक्चर ActivePivot के प्रदर्शन को कैसे प्रभावित करता है?
- 14. एक बड़ा लेनदेन लॉग प्रदर्शन को कैसे प्रभावित करता है?
- 15. एसक्यूएल प्रक्रिया में प्रिंट स्टेटमेंट प्रदर्शन को प्रभावित करना चाहिए?
- 16. 'पिन किए गए जीसी हैंडल' के पीछे क्या धारणा है?
- 17. क्या कॉलम की संख्या क्वेरी प्रदर्शन को प्रभावित करती है?
- 18. क्या WHERE खंड में स्थितियों का क्रम MySQL प्रदर्शन को प्रभावित करता है?
- 19. क्या नामस्थानों की संख्या प्रदर्शन को प्रभावित करती है?
- 20. किसी ऑब्जेक्ट पर जीसी क्लीनअप की संख्या
- 21. क्या `locals() 'में पहुंच योग्य` .0` चर या स्मृति या प्रदर्शन को प्रभावित करता है?
- 22. सक्रियरण रेलवे को प्रभावित करता है ')() की क्षमताओं को कैसे प्रभावित करता है?
- 23. जब उपयोगकर्ता स्क्रीन को पिन करता है तो UIImage ऑब्जेक्ट को ज़ूम इन/आउट कैसे करें?
- 24. क्या किसी ऑब्जेक्ट को संदर्भित करना संभव है
- 25. बड़े तारों को संसाधित करना, क्या यह बड़ा ऑब्जेक्ट हीप फ्रैगमेंटेशन है?
- 26. क्या नामस्थान का उपयोग प्रदर्शन या संकलन समय को प्रभावित करता है?
- 27. PHP पीडीओ: प्रदर्शन को फिर से तैयार करने के तरीके को कैसे प्रभावित करता है
- 28. क्या एक्सएएमएल में एक शैली सेट करना संभव है जो चुनिंदा नियंत्रण को प्रभावित करता है?
- 29. क्या जीसी द्वारा एकत्रित वस्तुओं को हुक करना संभव है?
- 30. रेखा-ऊंचाई छवियों को प्रभावित करता है?
उत्तर के लिए धन्यवाद। मुझे यकीन नहीं है कि मुझे दूसरा अनुच्छेद मिलता है: एक संदर्भ रखने से अधिक उपलब्ध स्मृति को पिनिंग क्यों कम करता है? मैं हमेशा एलओएच पर कुछ आवंटित करने के लिए अनिवार्य रूप से एक मुफ्त मेमोरी ब्लॉक की तलाश में था या एक नया सेगमेंट आवंटित करना चाहता था - यदि हां, तो किसी भी लाइव ब्लॉक का इलाज किया जाना चाहिए, पिन किया गया है या नहीं। – Niki
@nikie: यह अब और नहीं करता है, यह वही प्रभाव है (जैसा कि आपने कहा है)। मैंने तदनुसार अपना जवाब अपडेट कर लिया है। यह एक छोटा, लेकिन महत्वपूर्ण परिवर्तन है। – casperOne