विंडोज़ प्रक्रिया मेमोरी से बाहर कब चलती है?

विंडोज सर्वर 2003 के तहत, एंटरप्राइज़ संस्करण, एसपी 2 (/ 3 जीबी स्विच सक्षम नहीं है)

जैसा कि मैं इसे समझता हूं, और मैं गलत हो सकता हूं, प्रक्रिया के लिए अधिकतम पता योग्य स्मृति 4 जीबी है।

क्या 2 जीबी निजी बाइट्स और 2 जीबी आभासी बाइट्स है?

क्या निजी बाइट सीमा या आभासी बाइट सीमा तक पहुंचने पर आपको "स्मृति से बाहर" त्रुटियां मिलती हैं?

2

6 उत्तर

यह सही है कि एक प्रक्रिया में अधिकतम पता स्थान 4 जीबी है। ऑपरेटिंग सिस्टम द्वारा उठाए गए प्रत्येक प्रक्रिया के लिए पता स्थान का आधा हिस्सा है। इसे 3 जीबी स्विच के साथ बदला जा सकता है लेकिन यह सिस्टम अस्थिरता का कारण बन सकता है। इसलिए, प्रक्रिया के लिए स्वयं को 2 जीबी एड्रेस करने योग्य मेमोरी के साथ छोड़ दिया जाता है। खैर, पूरी तरह से नहीं। यह पता चला है कि इस जगह का एक हिस्सा अन्य सामानों जैसे डीएलएल को एक अन्य आम कोड द्वारा लिया जाता है। प्रोग्रामर के रूप में आपके लिए उपलब्ध वास्तविक स्मृति लगभग 1.5 जीबी - 1.7 जीबी है।

मुझे इस बारे में निश्चित नहीं है कि आप गलती से इस सीमा से ऊपर कैसे जा सकते हैं लेकिन मुझे इस कारण के लिए बड़े मल्टीप्लेयर मानचित्रों में क्रैश करने वाले गेम के बारे में पता है। एक और बात यह है कि एक 32 बिट प्रोग्राम 64 बिट सिस्टम पर 2 जीबी एड्रेस स्पेस से अधिक का उपयोग नहीं कर सकता है जब तक कि वे/LARGEADDRESSAWARE: YES लिंकर ध्वज सक्षम न करें।

4
जोड़ा

32 बिट मशीन के लिए अधिकतम एड्रेसेबल मेमोरी 4 जीबी है, 64 बिट मशीन के लिए आप लोड को और अधिक संबोधित कर सकते हैं। (हालांकि कुछ 32 बिट मशीनों में अधिक एक्सेस करने के लिए एक्सटेंशन सिस्टम हैं, लेकिन मुझे नहीं लगता कि यह परेशान करने या उपयोग के लिए विचार करने योग्य है)।

आभासी सीमा तक पहुंचने पर आप स्मृति त्रुटियों से बाहर हो जाते हैं। विंडोज सर्वर 2003 पर, टास्क मैनेजर आपको 'कमिट चार्ज सीमा' लेबल वाले प्रदर्शन टैब पर सीमा बताता है।

0
जोड़ा

निम्न लिंक यह बताता है कि मैं कभी भी इससे बेहतर हूं:

एमएसडीएन - सीएलआर अंदरूनी: मेमोरी मुद्दे की जांच

0
जोड़ा

32 बिट्स पर, यदि वर्चुअल मेमोरी के लिए पर्याप्त भौतिक मेमोरी और डिस्क स्पेस है, तो मेमोरी लगभग 3 जीबी तक चलती है क्योंकि कर्नेल 0xC0000000 से ऊपर एड्रेस स्पेस को अपने लिए सुरक्षित रखता है। एक 64 बिट्स कर्नेल 64 बिट्स अनुप्रयोग चलाने पर, सीमा 8TB पर है।

For more details, check out MSDN - Memory Limits for Windows Releases

0
जोड़ा

Mark Russinovich started a series of posts on this.. Pushing the Limits of Windows: Physical Memory

जबकि 4 जीबी 32-बिट क्लाइंट एसकेयू के लिए लाइसेंस प्राप्त सीमा है, प्रभावी सीमा वास्तव में कम है और सिस्टम के चिपसेट और कनेक्टेड डिवाइस पर निर्भर है। इसका कारण यह है कि भौतिक पता मानचित्र में न केवल रैम, बल्कि डिवाइस मेमोरी भी शामिल है, और x86 और x64 सिस्टम 32 जीबी ऑपरेटिंग सिस्टम के साथ संगत रहने के लिए 4 जीबी एड्रेस सीमा के नीचे सभी डिवाइस मेमोरी को मैप करते हैं, जो नहीं जानते कि कैसे संभालें 4 जीबी से बड़े पते। यदि किसी सिस्टम में 4 जीबी रैम और डिवाइस हैं, जैसे कि वीडियो, ऑडियो और नेटवर्क एडेप्टर, जो विंडोज़ को अपनी डिवाइस मेमोरी में लागू करते हैं जो कि 500 ​​एमबी तक है, 4 जीबी रैम का 500 एमबी 4 जीबी एड्रेस सीमा से ऊपर रहता है।

0
जोड़ा

आप केवल 32 बिट विंडोज प्लेटफॉर्म पर कुल (2 जीबी स्विच के बिना) 2 जीबी मेमोरी तक पहुंच सकते हैं।

आप 64 बिट ओएस पर एकाधिक 32 बिट वीएम चला सकते हैं ताकि प्रत्येक ऐप के पास जितनी मेमोरी हो सके उतनी मेमोरी तक पहुंच हो, यदि आपकी मशीन में 4 जीबी से अधिक है।

बहुत से लोग इन बाधाओं को मारने शुरू कर रहे हैं, मुझे लगता है कि यदि आपका ऐप .NET या जावा में है तो वीएम के रूप में 64 बिट ओएस पर 32 जीबी मेमोरी तक खुशी से बढ़ना आसान है।

0
जोड़ा