मैं Xara Xtreme, ओपन सोर्स एसवीजी ग्राफिक्स एप्लिकेशन बनाने के लिए किए गए कुछ निर्णयों से गुज़र रहा था। उनका स्मृति प्रबंधन निर्णय मेरे लिए काफी दिलचस्प था क्योंकि मैंने इसे निष्पक्ष रूप से स्वीकार किया था कि ऑब्जेक्ट उन्मुख आवेदन लिखने के तरीके के रूप में मांग पर गतिशील आवंटन।किस स्थिति में स्थिर आवंटन किराया गतिशील आवंटन से बेहतर है?
प्रलेखन से स्पष्टीकरण
है कैसे पृथ्वी पर स्थिर कर सकते हैं आवंटन कुशल हो सकता है?
यदि आप बड़े गतिशील डेटा संरचनाओं के लिए उपयोग किया जाता है, तो यह आपके लिए अजीब प्रतीत हो सकता है। सबसे पहले, हमारे सभी ऑब्जेक्ट्स (और इस प्रकार आवंटन आकार) इंप्रेशन जैसे प्रोग्राम के भीतर प्रत्येक गतिशील क्षेत्र आवंटन की तुलना में (औसत पर) बहुत छोटे हैं। इसका मतलब है कि हालांकि स्मृति के भीतर कई छेद होने की संभावना है, वे छोटे हैं। इसके अलावा, हमारे पास स्मृति के भीतर अधिक आवंटित ऑब्जेक्ट्स हैं, और इस प्रकार इन छेद जल्दी से भर जाते हैं। इसके अलावा, आभासी स्मृति प्रबंधकों है कि कोई आवंटन शामिल स्मृति के किसी भी पृष्ठों को मुक्त और ऑपरेटिंग सिस्टम को यह स्मृति वापस दे देंगे तो यह फिर से इस्तेमाल किया जा सकता है कि (या तो हमारे द्वारा, या किसी अन्य कार्य के द्वारा)।
हम तथ्य यह है कि जब भी हम इस तरह से स्मृति को आबंटित है, हम के बारे में कोई स्मृति स्थानांतरित करने के लिए नहीं है से काफी लाभ। यह आर्टवर्क्स में एक बाधा साबित हुआ जो में समवर्ती रूप से उपयोग किए जाने वाले कई छोटे आवंटन थे। more
संक्षेप में, छोटी वस्तुओं और स्मृति कदम को रोकने के लिए की जरूरत के बहुत सारे की उपस्थिति स्थिर आवंटन को चुनने के लिए दिए गए कारण हैं। मुझे उल्लिखित कारणों के बारे में स्पष्ट समझ नहीं है।
हालांकि स्थिर आवंटन के बारे में यह वार्ता, कोड पर कर्सर देखने से मैं जो देखता हूं वह यह है कि आवेदन शुरू होने पर स्मृति की एक ब्लॉक गतिशील रूप से आवंटित की जाती है और आवेदन समाप्त होने तक जीवित रखा जाता है, लगभग स्थिर आवंटन को अनुकरण करता है।
क्या आप परिस्थितियों में बता सकते हैं कि स्थैतिक आवंटन किराया ऑन-डिमांड गतिशील आवंटन से बेहतर है ताकि इसे गंभीर अनुप्रयोगों में आवंटन का मुख्य माध्यम माना जा सके?
धन्यवाद। अब मैं देखता हूं कि ऑब्जेक्ट पूल पैटर्न Xara Xtreme में उपयोग की जाने वाली तकनीक है। http://en.wikipedia.org/wiki/Object_pool_pattern – rpattabi