2010-03-16 9 views
33

मेरे पास read 32 बिट विंडोज़ पर अधिकतम ढेर आकार ~ 1.5 जीबी है जो इस तथ्य के कारण है कि जेवीएम को संगत स्मृति की आवश्यकता है। क्या कोई "संगत स्मृति" की अवधारणा को समझा सकता है और आपके पास विंडोज़ पर अधिकतम 1.5 जीबी क्यों है?अधिकतम जेवीएम ढेर आकार को समझना - 32 बिट बनाम 64 बिट

दूसरा, 64 बिट विंडोज़ पर अधिकतम ढेर आकार क्या है और यह 32 बिट पर उपलब्ध चीज़ों से अलग क्यों है?

+2

32-बिट ओएस पर किसी भी 32-बिट जेवीएम की सीमा लगभग 1.2 जीबी (विंडोज़ के कुछ संस्करण) से 2.0 जीबी (सोलारिस) तक है। 64-बिट सोलारिस पर 32-बिट जेवीएम 4 जीबी प्राप्त कर सकते हैं। मुझे लगता है कि 64-बिट विंडोज़ पर अधिकतम 64-बिट जेवीएम 32 जीबी है। – Seth

+0

मुझे 64 बिट Win7 पर 32 बिट जेवीएम की उम्मीद होगी कि वह 4 जीबी भी प्राप्त कर सके - लेकिन ऐसा नहीं है - यह 1.5 जीबी फिर से है ... (जेडीके 5) – zb226

उत्तर

35

32-बिट/64-बिट हिस्सा जावा

से संबंधित नहीं है ऐसा लगता है कि एक 32-बिट सिस्टम में स्मृति स्थल के 32-बिट अहस्ताक्षरित पूर्णांक के द्वारा दर्शाया जाता है। यह 2^32 संभव स्मृति स्थानों तक की अनुमति देता है। चूंकि प्रत्येक स्थान 1 बाइट स्टोर करता है, इसलिए आपको 2^32 बाइट्स या 4 जीबी मिलती है।

64 बिट सिस्टम पर 2^64 स्थान या 16 एक्साबाइट्स हैं।

अब, विंडोज़ में, संगत हिस्सा एक बड़ा मुद्दा बन जाता है, लेकिन यह वही है जो विंडोज चीजें करता है। विचार यह है कि आपको अपने ढेर के लिए एक संपूर्ण "निर्बाध" सीमा की आवश्यकता है। अफसोस की बात है, विंडोज बीच में कुछ स्मृति आवंटित करता है। यह मूल रूप से आपके ढेर को आवंटित करने के लिए लगभग 1.5-2 जीबी भाग, लगभग आधे बाएं तरफ या आधे दाहिने तरफ के साथ छोड़ देता है।

32 बनाम 64 बिट पर अधिक जानकारी के लिए this question देखें।

संपादित करें: एक्सा उपसर्ग के लिए धन्यवाद mrjoltcola!

+0

एक्सा पेटा के बाद आता है;) मैं कुछ हद तक निहित हूं पहले से ही, लेकिन मुझे लगता है कि यह इंगित करने लायक है कि, चूंकि पता स्थान इतना बड़ा है, इसलिए उपलब्ध पता स्थान का एक बड़ा संगत ब्लॉक ढूंढना आसान है - यही कारण है कि आप 64-बिट ओएस पर एक बड़ा ढेर आकार निर्दिष्ट कर सकते हैं । – rob

+0

यह भी ध्यान देने योग्य है कि स्मृति के लिए, एक्साबाइट 1024^6 बाइट्स है और स्टोरेज का एक्साबाइट 1000^6 बाइट है। तो 2^64 मेमोरी के 16 एक्साबाइट्स और स्टोरेज के 18.4 एक्साबाइट्स हैं। ;) –

6

संगत बस का मतलब है "अंतराल के बिना", एक लंबा एकल खंड। यह राशि सीमित है कि ओएस आपके प्रक्रिया के लिए कितना बड़ा मैप मैप कर सकता है। चाहे जावा को एक संगत ढेर की आवश्यकता हो या नहीं, JVM के लिए एक कार्यान्वयन मुद्दा है और अन्य वीएम के लिए मौजूद नहीं हो सकता है।

4

संगत स्मृति केवल 1.2 जीबी ढेर का उपयोग करने के लिए खिड़कियों को सीमित करने में समस्या नहीं है। हालांकि न्यूनतम/अधिकतम ढेर परिभाषित किया गया है, जेवीएम प्रारंभ करते समय सिस्टम मेमोरी से अधिकतम ढेर पर कब्जा करेगा। इसके बाद कब्जे वाले सिस्टम मेमोरी के भीतर केवल न्यूनतम ढेर का संदर्भ दिया जाएगा जब तक इसे विस्तारित नहीं किया जाता। प्रदर्शन में सुधार के लिए अधिकांश प्रत्यारोपण में जेवीएम शुरू करने के लिए अधिकतम ढेर की संगत स्मृति आवश्यक है।

जैसा कि 32 बिट हार्डवेयर की सीमा से ऊपर वर्णित मार्कस एक प्रक्रिया (थ्रेड) के लिए 4 जीबी है। प्रत्येक ऑपरेटिंग सिस्टम इस 4 जीबी को अलग-अलग संबोधित करता है। 4 जीबी मुख्य रूप से कर्नेल स्पेस और उपयोगकर्ता स्पेस के रूप में विभाजित है। 32 बिट विंडोज़ में अधिकतम उपयोगकर्ता स्थान 1.5 जीबी के करीब है। अधिक उपयोगकर्ता स्थान रखने के लिए/3 जीबी स्विच के साथ विंडोज बूट करने का विकल्प है।

संबंधित मुद्दे