नोट: मैं सवाल Memory management in memory intensive application के बारे में पता कर रहा हूँ, फिर भी उस सवाल का अनुप्रयोग जो लगातार स्मृति आवंटन बनाने के बारे में प्रतीत होता है, जबकि मेरे सवाल जानबूझकर के रूप में ज्यादा भौतिक स्मृति का उपभोग करने के लिए डिज़ाइन अनुप्रयोगों के बारे में है जैसा सुरक्षित हैमेमोरी मैनेजमेंट गहन अनुप्रयोगों
मेरे पास एक सर्वर अनुप्रयोग है जो कैशिंग और अन्य अनुकूलन (SQL सर्वर सोचने) को करने के लिए बड़ी मात्रा में स्मृति का उपयोग करता है। यह एप्लिकेशन एक समर्पित मशीन पर चलता है, और इसलिए सिस्टम पर अन्य अनुप्रयोगों को प्रभावित करने की चिंता किए बिना थ्रूपुट और प्रतिक्रिया समय को बढ़ाने और बढ़ाने के लिए जितना चाहें उतना मेमोरी उपभोग कर सकता है (और चाहिए)।
समस्या यह है कि यदि स्मृति उपयोग को कम करके आंका जाता है, या यदि लोड विफलता के साथ समाप्त होने के कारण लोड विफल हो जाता है क्योंकि स्मृति आवंटन विफल रहता है - इस स्थिति में जाहिर है कि सबसे अच्छी बात यह है कि स्मृति को मुक्त करने के लिए स्मृति को मुक्त करना है प्रदर्शन की कीमत पर विफलता।
कुछ मान्यताओं:
- आवेदन एक समर्पित मशीन पर चल रहा है
- आवेदन की स्मृति आवश्यकताओं मशीन पर भौतिक स्मृति (से अधिक है कि है, अगर अतिरिक्त मेमोरी यह आवेदन के लिए उपलब्ध था प्रतिक्रिया समय या थ्रूपुट में सुधार करने के लिए हमेशा उस मेमोरी का उपयोग करने में सक्षम होंगे)
- स्मृति प्रभावी ढंग से इस तरह से प्रबंधित की जाती है कि स्मृति विखंडन कोई मुद्दा नहीं है।
- एप्लिकेशन जानता है कि स्मृति को सुरक्षित रूप से मुक्त किया जा सकता है, और कम से कम प्रदर्शन प्रभाव के लिए सबसे पहले स्मृति को मुक्त किया जाना चाहिए।
- एक Windows मशीन पर अनुप्रयोग रन
मेरा प्रश्न है - कैसे मैं इस तरह के एक आवेदन में स्मृति आवंटन संभाल चाहिए? विशेष रूप से:
- मैं कैसे अनुमान लगा सकता हूं कि स्मृति आवंटन विफल हो जाएगा या नहीं?
- क्या यह सुनिश्चित करने के लिए कि कोर ओएस ऑपरेशंस उत्तरदायी रहे (और इस तरह से अनुप्रयोग प्रदर्शन पर प्रतिकूल प्रभाव नहीं डालते), और मैं यह कैसे पता लगा सकता हूं कि यह कितनी मेमोरी है?
कोर उद्देश्य , बहुत अधिक स्मृति का उपयोग करते समय एक ही समय में जितना संभव हो उतना स्मृति का उपयोग करने का एक परिणाम के रूप विफलताओं को रोकने के लिए है।
मैं एक सी # डेवलपर हूं, हालांकि मेरी आशा यह है कि इस तरह के किसी भी ऐप के लिए बुनियादी अवधारणाएं भाषा के बावजूद समान हैं।
बीटीडब्ल्यू - मैं आभासी बनाम भौतिक स्मृति की जटिलताओं के कारण जानबूझकर "स्मृति" शब्द के बारे में सोच रहा हूं। इसी कारण से मैंने 32 बिट बनाम 64 बिट का उल्लेख नहीं किया है। – Justin