विंडोज़ पर मावेन 2 के तहत जावा हीप स्पेस सेट करना


91

मुझे यह संदेश मेरी परियोजना के निर्माण के दौरान मिला है

java.lang.OutOfMemoryError: जावा हीप स्पेस

मैं हीप स्पेस कैसे बढ़ाऊं, मुझे 8 जीबी या रैम मिली है, यह असंभव है कि मावेन ने इतना खाया, मुझे यह http://vikashazrati.wordpress.com/2007/07/26/quicktip-how-to-increase-the -जवा-हीप-मेमरी-फॉर-मावेन -2-ऑन-लाइनक्स / इसे लिनक्स पर कैसे करें, लेकिन मैं विंडोज़ 7 पर हूं। मैं विंडोज़ के तहत जावा हीप स्पेस कैसे बदल सकता हूं?


मुझे लगता है कि आप विंडोज़ के 64 बिट संस्करण पर हैं? यदि नहीं, तो आप 1.5G से अधिक के आकार के रूप में निर्दिष्ट नहीं करने जा रहे हैं, अन्य 0.5G विंडो आपको सीधे JVM द्वारा उपयोग करने की अनुमति देता है। उपयोगकर्ता मोड कोड के लिए कर्नेल मोड कोड और 3 जी के लिए केवल 1G का उपयोग करने के लिए खिड़कियां प्राप्त करने का एक विकल्प है, लेकिन सूरज जेवीएम आपको इसका उपयोग करने की अनुमति नहीं देगा।
विर्क

@vickirk मैं विंडोज़ के 64 बिट संस्करण पर हूँ
गैंडालफ स्टॉर्मको

1
क्या आप JVM के 64-बिट संस्करण का भी उपयोग कर रहे हैं? इसे JDK डाउनलोड पेज पर ड्रॉपडाउन सूची में विंडोज x64 के रूप में सूचीबद्ध किया जाएगा: java.sun.com/javase/downloads/widget/jdk6.jsp
पॉवरलॉर्ड

जवाबों:


117

MAVEN_OPTSउदाहरण के लिए, सेट करने के लिए पर्यावरण चर है MAVEN_OPTS=-Xmx1024mmaxmemपोम में विन्यास ही लागू होता है जब आप कांटा करने के लिए संकलक प्लगइन सेट javacएक नया JVM में। अन्यथा प्लगइन उसी वीएम के अंदर मावेन के रूप में चलता है और इस प्रकार मेमोरी के भीतर कमांड लाइन पर से होकर गुजरता है MAVEN_OPTS

विंडोज 7 के तहत MAVEN_OPTS सेट करने के लिए:

  1. मेरा कंप्यूटर पर राइट क्लिक करें और गुण चुनें (कीबोर्ड शॉर्टकट प्रेस Windows+ Pause/Break)
  2. उन्नत सिस्टम गुण प्रदर्शित करने के लिए सिस्टम गुण के बाएं नेविगेशन में स्थित उन्नत सिस्टम सेटिंग्स लिंक पर क्लिक करें
  3. पर जाएं उन्नत टैब और क्लिक पर्यावरण चर के तल पर स्थित बटन उन्नत सिस्टम गुण विन्यास खिड़की
  4. एक बनाएं नई उपयोगकर्ता चर, सेट चर नाम MAVEN_OPTS करने और सेट चर मूल्य के लिए -Xmx1024m(या अधिक)

एक नई कमांड विंडो खोलें और चलाएं mvn


1
क्या इससे मेरे निर्माण की गति पर कोई प्रभाव पड़ता है? क्या मेरे मैवेन बिल्ड को बढ़ावा देने के लिए कोई टिप है जो इसे अधिक मेमोरी आवंटित करने के साथ है?
महेंद्रन

45

यदि आप अचूक (या विफल) JUnit परीक्षण चलाने के दौरान हीप स्पेस से बाहर चल रहे हैं, तो MAVEN_OPTS बदलने से आपको मदद नहीं मिल सकती है। मैं MAVEN_OPTS में अलग-अलग कॉन्फ़िगरेशन की कोशिश कर रहा था, जब तक कि मुझे यह पोस्ट नहीं मिला जब तक कि मैंने इस समस्या को ठीक नहीं किया।

मूल रूप से JUnits अपने स्वयं के वातावरण में बंद हो जाते हैं और MAVEN_OPTS में सेटिंग्स को अनदेखा करते हैं। JUnits के लिए अधिक मेमोरी जोड़ने के लिए आपको अपने पोम में अचूक कॉन्फिगर करने की आवश्यकता है।

उम्मीद है कि यह किसी और को कुछ समय बचा सकता है!


संपादित करें: केथ चैपमैन के ब्लॉग से समाधान कॉपी करने के मामले में बस लिंक किसी दिन टूट जाता है:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <forkMode>pertest</forkMode> 
    <argLine>-Xms256m -Xmx512m</argLine>
    <testFailureIgnore>false</testFailureIgnore> 
    <skip>false</skip> 
    <includes> 
      <include>**/*IntegrationTestSuite.java</include>
    </includes>
  </configuration>
</plugin>

अद्यतन (5/31/2017): इसे इंगित करने के लिए @johnstosh को धन्यवाद - जब से मैंने इस उत्तर को बाहर रखा है, तब से निश्चितता थोड़ी विकसित हो गई है। यहाँ उनके प्रलेखन और एक अद्यतन कोड नमूना (इस सवाल के लिए arg लाइन अभी भी महत्वपूर्ण हिस्सा है) का लिंक दिया गया है :

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.20</version>
    <configuration>
        <forkCount>3</forkCount>
        <reuseForks>true</reuseForks>
        <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
        <systemPropertyVariables>
            <databaseSchema>MY_TEST_SCHEMA_${surefire.forkNumber}</databaseSchema>
        </systemPropertyVariables>
        <workingDirectory>FORK_DIRECTORY_${surefire.forkNumber}</workingDirectory>
    </configuration>
  </plugin>

इसने मेरा कुछ समय बचाया! धन्यवाद! दुर्भाग्य से मैं केवल एक बार उत्थान कर सकता हूं! :)
जवन्ना

वास्तविक मावेन शैली में, दूसरों के बीच यह सबसे सहायक उत्तर है। धन्यवाद!
एंड्रीमोनी

इस सवाल का वास्तविक जवाब है
जोनाथन लैंड्रम

1
अचूक पर डॉक्स देखें। 2.14 से पहले के अचूक संस्करण, फोर्किंग को कॉन्फ़िगर करने के लिए पैरामीटर forkMode का उपयोग करते थे। यद्यपि वह पैरामीटर अभी भी पिछड़ी संगतता के लिए समर्थित है, उपयोगकर्ताओं को इसके कॉन्फ़िगरेशन को माइग्रेट करने और forkCount और पुन: उपयोग करने के लिए प्रोत्साहित किया जाता है बजाय इसके
जॉन्सटॉश

21

यह एक ही कमांड होना चाहिए, निर्यात के बजाय SET को छोड़कर

  • MAVEN_OPTS सेट करें = -Xmx512m इसे 512Mb का ढेर देगा
  • MAVEN_OPTS सेट करें = -Xmx2048m इसे 2Gb का ढेर देगा

मैं मानता हूं कि यह एक ही कमांड होना चाहिए, लेकिन यह सच बयान नहीं करता है, यहाँ है क्योंC:\my_project>MAVEN_OPTS=-Xmx512m 'MAVEN_OPTS' is not recognized as an internal or external command, operable program or batch file.
गंडालफ स्टॉर्मकैरो

ग्लोकोडर थोड़ा गलत है। आपको चर का निर्यात करने की आवश्यकता नहीं है, लेकिन आपको उनके लिए एक मूल्य निर्धारित करने की आवश्यकता है।
जेरेमीप

यदि आप प्रत्येक बिल्ड के लिए समान मानों का उपयोग करना चाहते हैं, तो आप MAVEN_OPTS को Windows परिवेश चर के रूप में भी सेट कर सकते हैं।
digitaljoel

@ कमंडल आपको इसके सामने सेट लगाने की जरूरत है @ जेरेमी हां, इसीलिए इसे निर्यात के बजाय सेट का उपयोग करने के लिए कहा गया है
corsiKa

9

Mac पर: इसके बजाय JAVA_OPTSऔर MAVEN_OPTS, इसके बजाय _JAVA_OPTIONS का उपयोग करें। यह काम!


यह विंडोज़ पर भी काम करता है। ग्रहण में मावेन रन कॉन्फ़िगरेशन में इसे एक पर्यावरण चर के रूप में जोड़ें, m2e से चलाए गए परीक्षण अब PermGen त्रुटि नहीं देते हैं
Fede

3

MAVEN_OPTS चर का उपयोग बिना किसी भाग्य के करने की कोशिश करने के बाद, मैं इस साइट पर आया, जिसने मेरे लिए काम किया। तो मुझे बस इतना करना था कि डिफ़ॉल्ट VM विकल्प में -Xms128m -Xmx1024m जोड़ा जाए और यह काम करे।

ग्रहण में उन लोगों को बदलने के लिए, विंडो -> प्राथमिकताएं -> जावा -> स्थापित JRE पर जाएं। चेक किए गए JRE / JDK को चुनें और एडिट पर क्लिक करें।


0

खिड़कियों पर:

एक पर्यावरणीय चर (सिस्टम और उपयोगकर्ता के चर दोनों में, मुझे कुछ अजीब समस्या है, कि यह विभिन्न स्थानों से भिन्न हो जाता है, इसलिए मैं उन दोनों को जोड़ता हूं)।

इसे MAVEN_OPTS नाम दें।

मूल्य होगा: -Xms1024m -Xmx3000m -XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled

संख्या भिन्न हो सकती है, उन्हें अपने मेम आकार के सापेक्ष बना सकते हैं।

मुझे वह समस्या थी और इसने इसे ठीक कर दिया, और कुछ नहीं!


0

यह काम किया - ग्रहण में बदलने के लिए, विंडो पर जाएं -> प्राथमिकताएं -> जावा -> स्थापित JREs। चेक किए गए JRE / JDK को चुनें और एडिट पर क्लिक करें।

डिफ़ॉल्ट VM तर्क = -Xms128m -Xmx1024m


-6

आप 2 विकल्प ढूंढ रहे हैं java:

  • -Xmx अधिकतम ढेर आकार
  • -Xms का ढेर आकार शुरू करना

उन्हें अपनी कमांड लाइन के javaनिष्पादन योग्य स्थान पर रखें, जैसे:

java -Xms512M -Xmx1024M my.package.MainClass

ध्यान रखें कि आप आवेदन के आधार पर शुरुआती और अधिकतम हीप आकारों को एक समान कर सकते हैं, क्योंकि यह रनटाइम के दौरान हीप को आकार देने से बचता है (जो उन अनुप्रयोगों में समय ले सकता है जिन्हें उत्तरदायी होने की आवश्यकता होती है)। हीप का आकार बदलना बहुत सी वस्तुओं को इधर-उधर घुमाना और बहीखाता को फिर से बनाना हो सकता है।

हर दिन की परियोजनाओं के लिए, उन्हें जो भी आपको लगता है कि वह काफी अच्छा है। मदद के लिए प्रोफाइल।


1
जैसा कि अविश्वास कहता है, यह विकल्प आपके लिए बिल्कुल भी काम नहीं करेगा, मावेन का उपयोग करके, कम से कम यह निर्दिष्ट करना होगा कि "-D" के साथ मावेन विकल्प है, लेकिन फिर भी यह एक जावा कमांड नहीं है कि हम किस बारे में बात कर रहे हैं
frandevel
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.