java.lang.OutOfMemoryError: जावा ढेर स्पेस मावेन में


122

जब मैं मावेन टेस्ट चलाता हूं, java.lang.OutOfMemoryError होता है। मैंने इसे समाधान के लिए गूगल किया है और इसके लिए प्रयास किया है export MAVEN_OPTS=-Xmx1024m, लेकिन यह काम नहीं किया। किसी को भी इस समस्या के लिए अन्य समाधान पता है, BTW मैं maven 3.0 का उपयोग कर रहा हूँ

अग्रिम में धन्यवाद

"Mvan test -e" चलाने पर त्रुटि संदेश यहाँ पेस्ट करें

विफल परीक्षण:
  चेतावनी (junit.framework.TestSuite $ 1)
  testDefaultPigJob_1 (com.snda.dw.pig.impl.DefaultPigJobLocalTest)
  testDefaultPigJob_2 (com.snda.dw.pig.impl.DefaultPigJobLocalTest)

टेस्ट रन: 11, विफलताएं: 3, त्रुटियां: 0, छोड़ दिया: 0

10/11/01 13:37:18 INFO निष्कासन ।HExecutionEngine: हडूप फाई से कनेक्ट
le system at: फ़ाइल: ///
[जानकारी] ----------------------------------------------- -------------------------
[जानकारी] निर्माण विफलता
[जानकारी] ----------------------------------------------- -------------------------
[जानकारी] कुल समय: 30.063s
[जानकारी] पर समाप्त: सोम नवम्बर ०37:३O:१ 2010 पीडीटी २०१०
[जानकारी] अंतिम मेमोरी: ३ एम / ६ एम
[जानकारी] ----------------------------------------------- -------------------------
[ERROR] लक्ष्य को निष्पादित करने में विफल। org.apache.maven.plugins: maven-Surefire-plugin: 2।
5: प्रोजेक्ट dw.pig पर परीक्षण (डिफ़ॉल्ट-परीक्षण): परीक्षण विफलताएं हैं।
[ERROR]
[ERROR] कृपया E: \ Code \ Java \ कार्यक्षेत्र \ dw.pig \ target_ अचूक-रिपोर्ट देखें
व्यक्तिगत परीक्षण के परिणाम r।
[त्रुटि] -> [सहायता १]
org.apache.maven.lifecycle.LifecycleExecutionException: लक्ष्य ओ निष्पादित करने में विफल
rg.apache.maven.plugins: maven-Surefire-plugin: 2.5: परीक्षण (डिफ़ॉल्ट-परीक्षण) परियोजना पर
 dw.pig: परीक्षण विफलताएँ हैं।

कृपया E: \ Code \ Java \ कार्यक्षेत्र \ dw.pig \ target \ Surefire-रिपोर्ट में देखें
परीक्षण के परिणाम।
        org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor)
जावा: 199)
        org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor)
जावा: 148)
        org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor)
जावा: 140)
        org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje पर
सीटी (LifecycleModuleBuilder.java:84)
        org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje पर
सीटी (LifecycleModuleBuilder.java:59)
        org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu पर
आई एल डी (LifecycleStarter.java:183)
        org.apache.maven.lifecycle.internal.LifecycleStarter.execute (जीवनचक्र)
eStarter.java:161)
        org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:314)
        org.apache.maven.DefaultMaven.execute (DefaultMaven.java:151)
        org.apache.maven.cli.MavenCli.execute (MavenCli.java:445)
        org.apache.maven.cli.MavenCli.doMain (MavenCli.java:168)
        org.apache.maven.cli.MavenCli.main (MavenCli.java:132)
        sun.reflect.NativeMethodAccessorImpl.invoke0 (मूल विधि) पर
        at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl
जावा: 39)
        sun.reflect.DelegatingMethodAccessorImpl.invoke (डेलिगेटमैथोडाक्सेस)
sorImpl.java:25)
        java.lang.reflect.Method.invoke पर (विधि.जवा .97)
        org.codehaus.plexus.classworlds.launcher.auncher.launchEnhanced (Laun
cher.java:290)
        org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.jav)
एक: 230)
        org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (La
uncher.java:409)
        org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:
352)
इसके कारण: org.apache.maven.plugin.MojoFailureException: परीक्षण विफलताएँ हैं
।

कृपया E: \ Code \ Java \ कार्यक्षेत्र \ dw.pig \ target \ Surefire-रिपोर्ट में देखें
परीक्षण के परिणाम।
        org.apache.maven.plugin.surefire.SurefirePlugin.execute (SurefirePugi)
n.java:629)
        org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (डिफ़ॉल्ट)
BuildPluginManager.java:107)
        org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor)
जावा: 195)
        ... 19 और
[ERROR]
[त्रुटि] पूर्ण डिबग लॉगिंग को सक्षम करने के लिए -X स्विच का उपयोग करके मावेन को फिर से चलाएं।
[ERROR]
[त्रुटि] त्रुटियों और संभावित समाधानों के बारे में अधिक जानकारी के लिए, कृपया पढ़ें
निम्नलिखित लेख d:
[ERROR] [सहायता १] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc

हो सकता है कि आपके परीक्षण में स्मृति रिसाव हो? कचरा इकट्ठा होने के बावजूद, आप अभी भी जावा में एक मेमोरी रिसाव बना सकते हैं: ibm.com/developerworks/library/j-leaks
aio

जवाबों:


158

जब मैं मावेन टेस्ट चलाता हूं, java.lang.OutOfMemoryError होता है। मैंने इसे समाधान के लिए Google किया है और MAVEN_OPTS = -Xmx1024m को निर्यात करने का प्रयास किया है, लेकिन यह काम नहीं किया।

काम करने वाले Xmxविकल्पों को सेट करना MAVEN_OPTS, यह मावेन को शुरू करने के लिए उपयोग किए गए जेवीएम को कॉन्फ़िगर करता है। यही कारण है कि किया जा रहा है ने कहा, maven-अचूक-प्लगइन कांटे डिफ़ॉल्ट रूप से नए JVM, और अपने MAVEN_OPTSइस प्रकार पारित नहीं कर रहे हैं।

जेवीएम के आकार को मावेन-अचूक-प्लगइन द्वारा कॉन्फ़िगर करने के लिए, आपको या तो निम्न करना होगा:

  • बदलने forkModeके लिए never(जो एक नहीं तो अच्छा विचार हो क्योंकि Maven परीक्षण से अलग नहीं किया जाएगा) ~ या ~
  • का उपयोग argLineपैरामीटर (सही तरीके से):

बाद के मामले में, कुछ इस तरह:

<configuration>
  <argLine>-Xmx1024m</argLine>
</configuration>

लेकिन मुझे यह कहना होगा कि मैं स्टीफन के साथ सहमत हूँ, यहाँ आपके एक परीक्षण में कुछ गड़बड़ होने की संभावना है और मुझे यकीन नहीं है कि अधिक मेमोरी देने से आपकी समस्या "हल" (छिपाने) का सही समाधान है।

संदर्भ


1
क्या आप केवल अपने मूल pom.xml में <कॉन्फ़िगरेशन> टैग अपडेट करते हैं?
केविन मेरेडिथ

3
forkModeपदावनत कर दिया गया है: maven.apache.org/surefire/maven-surefire-plugin/…
Macarse

1
@ मैकार्से forkModeको पदावनत कर दिया गया है, लेकिन मुझे लगता है कि केवल forkCountउसी के साथ प्रतिस्थापित किया जाना चाहिए जिसमें समान कार्यक्षमता हो। एक तरह से आप MAVEN_OPTS का उपयोग कर सकते हैं, <argLine>${env.MAVEN_OPTS}</argLine>लेकिन यह स्पष्ट रूप से अनुशंसित नहीं है क्योंकि यह कंप्यूटर से कंप्यूटर ( stackoverflow.com/a/10463133/32453 ) में भिन्न हो सकता है । यह भी ध्यान आप jacoco उपयोग कर रहे हैं आप सेट argLine करने वाले रहे हैं कि एक अलग तरह stackoverflow.com/questions/12269558/maven-jacoco-plugin-error
rogerdpack

63

मावेन (मेरे जैसे) के लिए उन नए लोगों के लिए यहां पूरा कॉन्फिग है जो आपके पोम के बिल्ड सेक्शन में जाता है। चीयर्स।

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19</version>
        <configuration>
            <argLine>-Xmx1024m</argLine>
        </configuration>
      </plugin>
    </plugins>
  </build>

12

संभावना यह है कि समस्या यूनिट परीक्षणों में से एक में है जिसे आपने मावेन को चलाने के लिए कहा है।

जैसे, ढेर के आकार के साथ गड़बड़ करना गलत दृष्टिकोण है। इसके बजाय, आपको उस यूनिट टेस्ट को देखना चाहिए जो OOME का कारण बना है, और यह पता लगाने की कोशिश कर रहा है कि क्या यह यूनिट टेस्ट या उस कोड का दोष है जो यह परीक्षण कर रहा है।

स्टैक ट्रेस को देखकर प्रारंभ करें। यदि कोई नहीं है, mvn ... testतो -eविकल्प के साथ फिर से दौड़ें ।


@ स्टीफन, मैं रन केस को एक्ज़ाम कॉन्सेप्ट में Xmx1024m सेट करने के बाद ग्रहण में पास कर सकता हूं, लेकिन यह हमेशा OutOfMemoryError को फेंक देता है, जब मैं कंसोल में "mvn टेस्ट" रन करता हूं, तब भी जब मैं 'mvn test -DMAVEN_OPTS' -XMx1024m विकल्प जोड़ता हूं। "
zjffdu

2
@zjffdu - आपने मेरी बात को पूरी तरह से याद किया! "-ई" को जोड़ने का उद्देश्य परीक्षणों को काम करना नहीं है। यह पता लगाना है कि वे काम क्यों नहीं करते हैं।
स्टीफन सी

1
@zjffdu - उस स्थिति में, आपको इस तरह से हार्ड डिबग करने की आवश्यकता होगी, जैसे कि आप अन्य जावा समस्याएँ करेंगे।
स्टीफन सी

2
जीडब्ल्यूटी परीक्षण मामलों को चलाते समय मुझे यह समस्या आती है, जो एक पूर्ण ब्राउज़र वातावरण का अनुकरण करते हैं। कभी-कभी यह ढेर आकार को बढ़ाने के लिए ठीक है।
djjeck

1
@ डज्जेक - हाँ कभी-कभी। लेकिन मुझे नहीं लगता कि यह ज्यादातर समय सही समाधान है।
स्टीफन सी

8

इस समस्या के लिए अस्थायी रूप से काम करने के लिए, मुझे निम्नलिखित तरीका सबसे तेज लगा:

export JAVA_TOOL_OPTIONS="-Xmx1024m -Xms1024m"

6

मैंने अपनी तरफ से इस समस्या को 2 तरीकों से हल किया है:

  1. इस कॉन्फ़िगरेशन को pom.xml में जोड़ रहा है

    <configuration><argLine>-Xmx1024m</argLine></configuration>
  2. 1.6 के बजाय JDK 1.7 का इस्तेमाल किया


2

Java.lang.OutOfMemoryError को हल करने के लिए: मावेन में जावा हीप स्पेस, पोम में नीचे विन्यास को कॉन्फ़िगर करने का प्रयास करें

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>${maven-surefire-plugin.version}</version>
     <configuration>
        <verbose>true</verbose>
        <fork>true</fork>
        <argLine>-XX:MaxPermSize=500M</argLine>
    </configuration>
</plugin>

1
MaxPermSize का उल्लेख करने के लिए +1। यदि आपकी याददाश्त में त्रुटि आपके इकाई परीक्षण में नए HiveContext बनाने जैसे bazillion वर्गों को लोड करने के कारण होती है, तो यह आपका समाधान है।

-2

स्मृति ही नहीं ढेर भी। वातावरण के चर में इन चरों का उपयोग करने वाले मावेन में अपवाद को हल करने के लिए परमिट आकार में भी वृद्धि करें।

variable name: MAVEN_OPTS
variable value: -Xmx512m -XX:MaxPermSize=256m

उदाहरण :

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=500m"

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