“VM के प्रारंभ के दौरान त्रुटि हुई; -Xmx3G का उपयोग करके ऑब्जेक्ट हीप के लिए पर्याप्त स्थान आरक्षित नहीं किया जा सकता है


93

सबसे पहले, मेरे पास 8 जीबी की रैम वाला एक बॉक्स है, इसलिए मुझे संदेह है कि कुल मेमोरी मुद्दा है। यह एप्लिकेशन 6gb या उससे कम मशीनों पर ठीक चल रहा है।

मैं ग्रहण में रन कॉन्फ़िगरेशन में "वीएम तर्क" के तहत 3 जीबी स्थान का उपयोग करने का प्रयास कर रहा हूं।

हर बार जब मैं 1500mb से अधिक आरक्षित करने का प्रयास करता हूं, तो मुझे यह त्रुटि मिलती है: “VM के प्रारंभ के दौरान त्रुटि हुई थी; -Xmx3G का उपयोग करके ऑब्जेक्ट हीप के लिए पर्याप्त स्थान आरक्षित नहीं किया जा सकता है

यहाँ क्या हो रहा है?


2
आपके पास जावा का कौन सा संस्करण है? आप किस ऑपरेटिंग सिस्टम पर चल रहे हैं?
एडम रॉफर

यह Win7 था, और मेरे पास 3 अलग-अलग जावा संस्करण स्थापित थे। उनमें से एक 32-बिट JRE था जिसे ग्रहण उपयोग कर रहा था।
user1212731

3
सही के रूप में एक जवाब चिह्नित करने के लिए मत भूलना।
xdhmoore

बस अपने sutaible स्थान के साथ ग्रिडल.प्रॉपर्टी में सेटिंग बदलें
भूषण

जवाबों:


64

क्या ऐसा हो सकता है कि आप उस मशीन पर 32-बिट jvm का उपयोग कर रहे हों?


8
मूर्खतापूर्ण प्रश्न के लिए क्षमा करें, लेकिन मैं इसे कैसे जांचूंगा? और मैं 64-बिट का उपयोग कैसे कर सकता हूं?
user1212731

3
दरअसल, मैंने कमांड लाइन में java -d64 -version की कोशिश की, और यह 64-बिट सर्वर VM के साथ आया।
user1212731

6
जाहिर तौर पर ग्रहण JRE के 32-बिट संस्करण का उपयोग कर रहा था, जिसे मैंने पहले स्थापित किया था, भले ही 64-बिट नवीनतम इंस्टॉलेशन था। मैंने इस समस्या को हल करने के लिए प्राथमिकताएँ -> स्थापित JRE में सेटिंग्स बदल दीं। उत्तर देने के लिए आपका धन्यवाद!
user1212731

3
किसी भी मामले में, 4gb को संबोधित करने के लिए 32 बिट पर्याप्त नहीं होना चाहिए?
थॉमस

7
यह होना चाहिए, लेकिन यह मेरी समस्या को हल करता है। स्पष्टीकरण की कमी के कारण इस उत्तर के लिए कोई उत्थान नहीं। यह लिंक बताता है कि कैसे एक 32 बिट जेवीएम 1 जीबी अधिकतम हीप स्थान पर नहीं जा सकता है
स्टीवन

58

इसे ठीक करने का तरीका यहां दिया गया है: पर जाएं Start->Control Panel->System->Advanced(tab)->Environment Variables->System

Variables->New:
Variable name: _JAVA_OPTIONS   
Variable value: -Xmx512M

Variable name: Path  
Variable value: ;C:\Program Files\Java\jre6\bin;F:\JDK\bin;  

इसे अपने उपयुक्त पथ में बदलें ।


4
बस दूसरों के लिए एक नोट। आप एक सिस्टम वैरिएबल जोड़ते हैं, एक USER वैरिएबल नहीं। मैं एक्लिप्स में इस समस्या में भाग गया और उपरोक्त परिवर्तन करने के बाद अपनी मशीन को रिबूट नहीं करना पड़ा ... मुझे केवल ग्रहण को फिर से शुरू करना पड़ा। धन्यवाद!
कप्तान_जिम 1

जिज्ञासु लोगों के लिए, _JAVA_OPTIONS में -Xmx ध्वज अधिकतम अनुमत JVM हीप आकार निर्दिष्ट करता है। यह JVM को अनुचित स्थान (विशेष रूप से 32-बिट मशीनों के लिए असंगत रूप से अस्वीकार्य) का अनुरोध करने से रोकता है ...
Varun

41

यह वास्तव में एक ग्रहण-विशिष्ट मुद्दा नहीं है; यह एक सामान्य जावा-ऑन-विंडोज समस्या है। यह इस वजह से है कि जेवीएम विंडोज पर मेमोरी कैसे आवंटित करता है; यह मेमोरी के एक सन्निहित भाग को आवंटित करने पर जोर देता है, जो अक्सर विंडोज प्रदान नहीं कर सकता है, भले ही आवंटन अनुरोध को पूरा करने के लिए पर्याप्त अलग-अलग हिस्सा हो। ऐसी उपयोगिताएं हैं जो विंडोज को उसकी मेमोरी को "डीफ़्रैग" करने में मदद करने की कोशिश करेगी, जो कि इस स्थिति में, सिद्धांत रूप में मदद करेगी; लेकिन मैंने वास्तव में उन्हें पूरी कोशिश नहीं की है इसलिए उनकी प्रभावशीलता पर बात नहीं कर सकता। एक चीज जो मैंने कभी-कभी सुनी है, वह विंडोज़ को रिबूट करने में मदद कर सकती है और किसी भी अन्य ऐप को शुरू करने से पहले, जावा ऐप लॉन्च करें जो मेमोरी के बड़े हिस्से की आवश्यकता है। यदि आप भाग्यशाली हैं, तो विंडोज ने अभी तक अपने मेमोरी स्पेस को खंडित नहीं किया है और जावा को उस सन्निहित ब्लॉक को मिलेगा जो इसके लिए पूछता है।

इंटरव्यू पर कहीं अधिक तकनीकी स्पष्टीकरण और इस मुद्दे के विश्लेषण हैं, लेकिन मेरे पास कोई संदर्भ नहीं है।

मुझे यह पता चला, हालांकि, जो मददगार लगता है: https://stackoverflow.com/a/497757/639520


2
मेरे मामले में, आपका जवाब काम लगता है। मैंने विंडोज़ को पुनः आरंभ नहीं किया, लेकिन मैंने अपनी विंडोज़ में अन्य ऐप्स को बंद करने की कोशिश की और फिर जावा चलाया और यह वीएम को किक करने में सक्षम था।
स्टटैक

22

पहले 32बिट्स का JRE अधिक ~ 1.5Gb का RAM उपयोग नहीं कर सकता है। इसलिए यदि आप अधिक चाहते हैं, तो 64 बिट JRE का उपयोग करें।

दूसरा, जब कोई नया JVM शुरू होता है, तो यह सब JVM की सम -Xmx संपत्ति होती है, जो चल रही होती है, और जाँच करें कि क्या सिस्टम में पर्याप्त मेमोरी अपने -Xmx पर चलने के लिए बची हुई है, यदि पर्याप्त नहीं है, तो त्रुटि उत्पन्न होती है।


15

मैं ग्रहण आईडीई से टॉमकैट सर्वर के साथ लाइफ़रे का उपयोग कर रहा था। मैं सर्वर स्टार्ट अप पर क्लिक पर इसी त्रुटि के साथ फंस गया था। ग्रहण से सर्वर पर डबल क्लिक करें। यह सर्वर अवलोकन पृष्ठ को खोलता है। -Xmx1024m -XX से अद्यतित मेमोरी तर्क: MaxPermSize = 256m से -Xmx512m -XX: MaxPermSize = 256m। तब यह मेरे लिए काम कर रहा था।



9

सुनिश्चित करें कि ग्रहण वास्तव में उसी जेवीएम को चला रहा है जिसे आप सोचते हैं कि यह चल रहा है। यदि आप कभी भी अपने वेब ब्राउज़र में जावा का उपयोग करते हैं, तो संभव है कि आपके पास एक 32-बिट संस्करण भी घूम रहा हो जो कि हाल ही में स्थापित या अद्यतन होने पर पूर्वता ले रहा हो।

पूरी तरह से निश्चित होने के लिए, मैं eclipse.iniशीर्ष पर आपकी फ़ाइल में इन दो पंक्तियों को जोड़ने की सलाह देता हूं :

-vm 
C:/Java/jdk1.6.0_27/bin

... जहां मेरी मशीन पर C:/Java/jdk1.6.0_27/binजहां मैं जानता हूं कि जेवीएम 64-बिट स्थित है। binवहां फोल्डर अवश्य रखें ।

(एक बोनस के रूप में, विंडोज 7 पर, यह आपको वास्तव में "टैब को पिन करने" की अनुमति देता है, यही वजह है कि मुझे यह अपने उपयोग के लिए करना पड़ा)


-Vm तर्क को Java निष्पादन योग्य होना चाहिए, न कि केवल एक फ़ोल्डर। देखें wiki.eclipse.org/%C2%A0eclipse.ini#Specifying_the_JVM
ई-रिज़

1
गलत। इस ग्रहण बग को देखें: bugs.eclipse.org/bugs/show_bug.cgi?id=314805
एडम

यह वास्तव में मुद्दा था! ग्रहण JRE के 32-बिट संस्करण का उपयोग कर रहा था जो मैंने किसी समय स्थापित किया था। उत्तर के लिए बहुत-बहुत धन्यवाद और मुझे सही दिशा में ले जाने के लिए! मैं इसकी बहुत सराहना करता हूं।
user1212731

@AdamRofer, यह बग दिलचस्प है, लेकिन विशेष रूप से विंडोज 7 के बारे में और टास्कबार के लिए ग्रहण को पिन करने की समस्या के आसपास काम करने के लिए। सामान्य तौर पर, eclipse.ini को java एक्ज़ीक्यूटेबल की ओर इशारा करना चाहिए, हालाँकि इक्विनॉक्स लॉन्चर में समझदारी दिखती है कि यह java एक्सेलेबल दिखेगी अगर -vm किसी फोल्डर (विंडोज़ पर, कम से कम) को इंगित करता है।
ई-रिज़

@ ई-रिज़ "मेरे स्वाद के लिए बहुत सख्त है" :) उम्मीद है कि वे बग को हल करने के लिए वीएम के तर्क को कुछ समय के बिना बदल देंगे। यहाँ अधिक जानकारी है कि उनके eclipse.iniपेज पर अद्यतन करने के लिए उनके लिए अच्छा होगा : wiki.eclipse.org/…
एडम

5

यह हीप आकार का मुद्दा है। अपनी .bat(बैच फ़ाइल) संपादित करें । यह Heap का आकार 1024 दिखा रहा होगा। इसे 512 में बदलें फिर इसे काम करना चाहिए।


2

मुझे एक्लिप्स का उपयोग करते समय भी यही समस्या थी जो कि 32 बिट थी और इसके द्वारा इस्तेमाल किया जाने वाला जेवीएम 64 बिट था। जब मैंने ग्रहण को 32 बिट जेवीएम पर पहुंचाया तब इसने काम किया


2

बस डाल #के सामने प्रतीक org.gradle.jvmargs=-Xmx1536mgradle.properties में

 # org.gradle.jvmargs=-Xmx1536m

यकीन नहीं है कि मैक ओएस पर कोटलिन-मल्टीप्लेट रिकॉर्डर की कोशिश करते समय यह कैसे काम करता था! वैसे भी, धन्यवाद!
चिंतन सोनी

1

मुझे पता है कि मुझे थोड़ी देर हो गई है, लेकिन यहाँ मेरा जवाब आता है:

मैंने अभी ओरेकल से जावा ऑनलाइन संस्करण स्थापित किया है (ऑफ़लाइन 64-बिट एक नहीं)।

JAVA_HOME ENV वैरिएबल जोड़े जाने के बाद, यह काम कर गया!

आशा है कि मैं मदद कर सकता हूँ :)


0

शायद आप वैसे भी गलत विकल्प आजमा रहे हैं। मुझे सहायक त्रुटि लॉग के साथ एक समान त्रुटि मिली:

Java HotSpot(TM) Client VM warning: ignoring option PermSize=32M; support was removed in 8.0
Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=128M; support was removed in 8.0

मेरे मामले में, सॉफ्टवेयर ने java 8 का समर्थन नहीं किया है (स्क्रिप्ट पुराने JVM तर्कों का उपयोग कर रही थी) लेकिन मेरे पास जावा 8 डिफ़ॉल्ट रूप से था।


0

इस समस्या का एक कारण टॉमकैट को शुरू करने के लिए कोई मेमोरी उपलब्ध नहीं है। खिड़कियों से अवांछित चल रहे सॉफ़्टवेयर को हटाने की कोशिश करें और ग्रहण और टॉमकैट को पुनरारंभ करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.