[.net] बड़े वस्तु ढेर क्यों और हम क्यों परवाह करते हैं?


1 Answers

यदि ऑब्जेक्ट का आकार कुछ पिन किए गए मान (.NET 1 में 85000 बाइट्स) से अधिक है, तो सीएलआर इसे बड़े ऑब्जेक्ट हीप में रखता है। यह अनुकूलित करता है:

  1. ऑब्जेक्ट आवंटन (छोटी वस्तुओं को बड़ी वस्तुओं के साथ मिश्रित नहीं किया जाता है)
  2. कचरा संग्रह (LOH केवल पूर्ण जीसी पर एकत्रित)
  3. मेमोरी डीफ्रैग्मेंटेशन (LOH कभी शायद ही कभी संकलित होता है)
Question

मैंने जनरेशन और बड़े ऑब्जेक्ट ढेर के बारे में पढ़ा है। लेकिन मैं अभी भी समझने में असफल रहा कि बड़ी वस्तु ढेर होने का महत्व (या लाभ) क्या है?

क्या गलत हो सकता है (प्रदर्शन या स्मृति के मामले में) यदि सीएलआर ने बड़ी वस्तुओं को संग्रहित करने के लिए जनरेशन 2 पर निर्भर किया होगा (मान लीजिए कि जेन 0 और जेन 1 के लिए थ्रेसहोल्ड बड़ी वस्तुओं को संभालने के लिए छोटा है)?




प्रिंसिपल यह है कि यह असंभव (और संभवतः खराब डिजाइन) है कि एक प्रक्रिया बहुत कम छोटी वस्तुओं को बनाएगी ताकि सीएलआर बड़ी वस्तुओं को एक अलग ढेर में आवंटित करे जिस पर यह नियमित ढेर के लिए एक अलग कार्यक्रम पर जीसी चलाता है। http://msdn.microsoft.com/en-us/magazine/cc534993.aspx






Related