दिलचस्प पोस्ट
GenyMotion Genymotion वर्चुअल डिवाइस को प्रारंभ करने में असमर्थ Session_register () नापसंद समस्या को ठीक कैसे करें? टेस्ट कक्षाओं के लिए केवल सार्वजनिक विधि बनाने के लिए एनोटेशन सी # में बयान का उपयोग कर नेस्टेड ओपनजीएल – एकाधिक बनावट के साथ मुखौटा क्रॉस-ऑरिजन अनुरोध पर अवरुद्ध इकाई फ़्रेमवर्क कोड में अनन्य प्रतिबंध प्रथम CSS के साथ स्वरूपण संख्या (दशमलव स्थान, हजारों विभाजक, आदि) ग्रहण त्रुटि: "दूरस्थ VM से कनेक्ट करने में विफल" जावास्क्रिप्ट का उपयोग करके ब्राउज़र से टीसीपी सॉकेट से कनेक्ट करना NHibernate जनरेटर PHP में बहुत बड़ी फाइल पढ़ना सी # रेगेक्स स्प्लिट – कॉमा के बाहर उद्धरण चिह्न सेलेनियम में "StaleElementReferenceException" से कैसे बचें? PHP: एक श्रेणी के लिए एक सरणी बनाएँ

क्या एक एकल .NET प्रक्रिया के लिए स्मृति सीमा है?

हम वर्तमान में एक एसक्यूएल डाटाबेस से निकाले गए डेटा को पकड़ने के लिए एक कैश-सिस्टम बनाने की सोच रहे हैं और इसे अन्य एप्लिकेशन (वेबसाइट, वेबसेवी आदि) के लिए उपलब्ध कराते हैं। हम कैश को विंडो सेवा के रूप में चलने की कल्पना करते हैं और मूल रूप से एक स्मार्ट शब्दकोश जिसमें कैश प्रविष्टियां हैं। मेरा सवाल है, क्या आवेदन के काम करने की एक सीमा है (यह विंडोज़ सर्वर 2003 के तहत चल रही होगी)? या भौतिक मेमोरी की सीमा क्या है?

वेब के समाधान से एकत्रित समाधान "क्या एक एकल .NET प्रक्रिया के लिए स्मृति सीमा है?"

32 बिट या 64 बिट? 32 बिट 2 जीबी है (एक प्रक्रिया के लिए), 64 बिट 1 टीबी (एन्टरप्राइज़ एपर्स 2003 सर्वर) है ।

हालांकि, सीएलआर ऑब्जेक्ट का अधिकतम आकार 64 जीबी पर भी 2 जीबी है ।

अपडेट: ऊपर दी गई जानकारी 2008 में सही थी। अधिक हाल की जानकारी के लिए ओहाड का जवाब देखें। विंडोज 2016 सर्वर में अधिकतम 24 टीबी हो सकती है ।

मैं हाल ही में एक 32 बिट प्रक्रिया पर .NET में स्मृति सीमाओं के आसपास व्यापक रूपरेखा कर रहा हूं। हम सभी इस विचार से बमबारी करते हैं कि हम एक। NET अनुप्रयोग में 2.4 जीबी (2 ^ 31) तक आवंटित कर सकते हैं लेकिन दुर्भाग्य से यह सच नहीं है :(। आवेदन प्रक्रिया में उपयोग करने के लिए बहुत जगह है और ऑपरेटिंग सिस्टम एक महान नौकरी का प्रबंध हमारे लिए है, हालांकि, एनईटी के अपने स्वयं के उपरिव्यय को लगता है जो साधारण वास्तविक अनुप्रयोगों के लिए लगभग 600-800 एमबी के लिए खाते हैं, जो स्मृति सीमा को आगे बढ़ाते हैं। इसका मतलब है कि जैसे ही आप एक पूर्णांक के सरणी आवंटित करते हैं जो 1.4 जीबी, आपको आउटऑफममेरी अपवाद देखने की अपेक्षा करनी चाहिए ()।

जाहिर है 64 बिट में, यह सीमा बाद में होती है (चलो 5 वर्षों में चैट करते हैं :)), लेकिन बढ़ती शब्द आकार के कारण स्मृति में सब कुछ का सामान्य आकार भी बढ़ता है (मुझे लगता है कि ~ 1.7 से ~ 2 बार पा रहा है)

मुझे जो पता है, वह यह है कि ऑपरेटिंग सिस्टम से आभासी स्मृति का विचार निश्चित रूप से आपको एक प्रक्रिया के अंतराल में अंतहीन आवंटन स्थान नहीं देता है। यह केवल इतना है कि पूर्ण 2.4 जीबी एक समय में चलने वाले सभी (कई) अनुप्रयोगों के लिए संबोधित हो।

MSDN से निम्न तालिका आपकी क्वेरी का सबसे सटीक उत्तर है। ध्यान दें कि IMAGE_FILE_LARGE_ADDRESS_AWARE झंडा प्रबंधित कंपाइलर से सीधे सेट नहीं किया जा सकता है, हालांकि सौभाग्य से इसे editbin उपयोगिता के माध्यम से पोस्ट बिल्ड सेट किया जा सकता है 4 जीटी / 3 जीबी ध्वज को संदर्भित करता है

वैकल्पिक शब्द

32 बिट विंडोज पर आप / 3 जीबी ध्वज के साथ विंडोज़ को बूट करके और अपने ऐप को "बड़ा पता जागरूक" के रूप में फ़्लैग करके थोड़ा अधिक मेमोरी प्राप्त कर सकते हैं

मथायस,

प्रत्यक्ष प्रश्न का उत्तर वास्तव में नहीं, लेकिन इस समस्या का सामना करने का एक और तरीका है जो कुछ बड़े नुकसानों के आसपास मिलेगा, जो कैशिंग समाधान के साथ एक प्रमुख सिरदर्द हो सकता है। (माफ करना, मुझे इस मामले पर कोई भी सिफारिश नहीं की गई है।)

हमने इसे पिछले प्रोजेक्ट में कार्यान्वित किया है, और इससे अन्य समस्याएं पैदा हुई हैं।

ऑफ़लाइन पहुंच के लिए, क्या आप डेस्कटॉप पर एसक्यूएल एक्सप्रेस का प्रयोग कर सकते हैं, ताकि आप अपने डेटाबेस के दर्पण को बना सकें (या सिर्फ आपको कैश करने की जरूरत है)? फिर आप को यह करना ज़रूरी है कि आपका एप्लिकेशन कौन सी डेटाबेस को इंगित कर रहा है। आप इसे भी डिफफ स्टोर कर सकते हैं और इन्हें सर्वर पर फिर से चला सकते हैं – हालांकि इसमें अन्य समस्याएं हैं आप स्थानीय प्रतिलिपि पर अनुमतियों को बदल सकते हैं जिससे कि यह केवल पढ़ने के लिए ही हो कि यह कैसे होना चाहिए।

ऐसे शब्दकोश जिन्हें आप एसक्यूएल इंडेक्सस जैसे ध्वनि बनाने की सोच रहे हैं। मैं एसक्यूएल पर आपके लिए काम करने पर भरोसा करता हूं यदि आप इस तरह से वास्तुशिल्प कर सकते हैं क्यों उस पहिया को नया रूप देना है? यदि आप करते हैं, तो आपको कैश एक्सपिरेशन और मेमोरी प्रबंधन के बारे में ध्यान से विचार करना होगा – खासकर यदि यह एक विंडो सेवा है

सौभाग्य,

सैम

किसी भी अन्य विंडोज प्रोग्राम के साथ, आप पता स्थान से सीमित हैं। वह है: 32-बिट पर, आपके पास 2GB का पता स्थान हो सकता है। X64 पर, आपके पास 8TB हो सकता है

यदि आपके पास 8TB भौतिक मेमोरी नहीं है, तो यह पृष्ठ से शुरू होगा।