2011-01-13 17 views
7

मेरे पास एक कक्षा है जो infinit चलाती है (कुछ भी नहीं, बस लूप और नींद), जिसे NeverReturn कहा जाता है। मैं Windows XP 32 बिट में निम्न आदेश का उपयोग कर इसे चलाने के लिए प्रयास करें:एक मशीन में हमारे पास कितने JVM हो सकते हैं?

जावा -Xms1200M NeverReturn

मैं कमांड के साथ लगता है मैं एक ही समय में केवल 4 जावा उदाहरण बना सकते हैं। 5 वें और अगले जावा कमांड जेवीएम बनाने में असफल रहेगा।

यदि मैं आदेश को -Xms600M में बदलता हूं, तो मैं 8 जावा उदाहरण बना सकता हूं। 9वीं असफल हो जाएगी।

क्या कोई इसे समझा सकता है? मैं सूरज jdk1.6 अद्यतन 23 और jdk1.5 अद्यतन 22 का उपयोग कर रहा हूं।

+3

'एस' इन-एक्सएमएस में कम से कम ** आवंटित करने के लिए JVM को कम से कम ** आवंटित करने के लिए मजबूर करता है। हो सकता है कि आप 'एक्स' के साथ 'एक्सएक्सएक्स' के बारे में सोच रहे हों, जो ** ** अधिकतर मेमोरी ** को आवंटित करेगा। यदि आपकी मशीन में 6 जीबी है, तो आप जो देख रहे हैं वह पूरी तरह सामान्य है कि आपने '-Xms' का उपयोग किया था। – Gugussee

+0

32 बिट एक्सपी संस्करण केवल 4 जीबी संभाल सकता है - और इस मामले में केवल 3 जीबी उपलब्ध है। – tigger

+1

मैं -Xms और -Xmx के बीच अंतर को समझता हूं। मेरा सवाल है कि ओएस में 32 बिट विंडोज सिस्टम पर 2 जीबी मेमोरी के बारे में हर प्रक्रिया देने की क्षमता है। लेकिन अभी भी कुछ जेवीएम प्रक्रिया को पार करने के लिए कुछ सीमाएं क्यों हैं। – xeranic

उत्तर

5

यदि आपके पास 1200 एम मेमोरी का उपयोग करते हुए प्रत्येक JVM के चार उदाहरण हैं, जो आपको आवंटित 4800 एम स्मृति देता है।

यदि आपके पास 600 एमएम तक का उपयोग करने वाले प्रत्येक JVM के आठ उदाहरण हैं, जो आपको 4800 मेमोरी भी देता है।

अगर मुझे लगता है, तो ऐसा लगता है कि समस्या यह है कि आप अपने सिस्टम पर मौजूद जेवीएम उदाहरणों के लिए और अधिक स्मृति का वादा करने की कोशिश कर रहे हैं। आपके द्वारा किए गए स्मृति की मात्रा को छोड़ने से आपके द्वारा चलाए जा सकने वाले उदाहरणों की संख्या में समान वृद्धि होनी चाहिए।

+0

+1। हां, जेडीके जांच करता है कि -Xms (और अन्य संबंधित) सेटिंग्स की गारंटी देने के लिए पर्याप्त स्मृति है या नहीं। – Thilo

+2

JVM स्टार्टअप पर स्मृति का निरंतर ब्लॉक आवंटित करता है। यदि कोई और मेमोरी + स्वैप नहीं है तो यह असफल हो जाएगा। –

0

इस तरह से लॉन्च वर्चुअल मशीन के प्रत्येक उदाहरण के लिए, 600 एमबी मेमोरी इसके लिए समर्पित है, जिसका अर्थ है कि यदि आपके पास केवल 1 जीबी मेमोरी है, तो आप केवल प्रत्येक उदाहरण को अनुमति देने पर JVM का एक उदाहरण सफलतापूर्वक लॉन्च कर सकते हैं 600 एमबी मेमोरी का उपभोग करें। इसकी आवाज़ से, आपके पास 600 एमबी प्रत्येक 8 उदाहरण चलाने के समय लगभग 4.6 जीबी मेमोरी मुक्त थी।

2

सरल उत्तर: जितना चाहें उतने JVMs; बेशक जब तक आपकी मशीन आवश्यक संसाधन प्रदान कर सकती है (स्मृति पढ़ें)।

यदि आप पूछना चाहते हैं कि आप एक मशीन (विभिन्न जेडीके/जेआरई संस्करण) में कितने जेडीके/जेआरई का उपयोग कर सकते हैं; जवाब है "कोई बाधा नहीं है"।

तो आपके पास कई जेडीके भी हो सकते हैं, हालांकि मुझे विंडोज इंस्टालरों के बारे में निश्चित नहीं है। आप इसके बजाए हमेशा डंप का उपयोग करना चुन सकते हैं।

उम्मीद है कि इससे मदद मिलती है।

+0

हालांकि सच्चाई मैं देखता हूं कि कई जेवीएम उदाहरणों की कुल स्मृति में कुछ सीमाएं हैं। लेकिन यह सीमा अन्य प्रक्रियाओं पर मौजूद नहीं है। – xeranic

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

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