[java] java.lang.OutOfMemoryError : Maven의 Java 힙 공간

maven 테스트를 실행하면 java.lang.OutOfMemoryError가 발생합니다. 솔루션을 찾기 위해 Google을 검색하고 시도했지만 export MAVEN_OPTS=-Xmx1024m작동하지 않았습니다. 누구나이 문제에 대한 다른 솔루션을 알고 있습니다 .BTW는 maven 3.0을 사용하고 있습니다.

미리 감사드립니다

“mvn 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 정보 executionengine.HExecutionEngine : hadoop fi에 연결
파일 시스템 : file : ///
[정보] ----------------------------------------------- -------------------------
[정보] 빌드 실패
[정보] ----------------------------------------------- -------------------------
[정보] 총 시간 : 30.063 초
[정보] 종료일 : Mon Nov 01 13:37:18 PDT 2010
[정보] 최종 메모리 : 3M / 6M
[정보] ----------------------------------------------- -------------------------
[오류] org.apache.maven.plugins : maven-surefire-plugin : 2 목표를 실행하지 못했습니다.
5 : test (default-test) on project dw.pig : 테스트 실패가 있습니다.
[오류]
[오류] E : \ Code \ Java \ workspace \ dw.pig \ target \ surefire-reports를 참조하십시오.
r 개별 테스트 결과.
[오류]-> [도움말 1]
org.apache.maven.lifecycle.LifecycleExecutionException : 목표 o를 실행하지 못했습니다.
프로젝트의 rg.apache.maven.plugins : maven-surefire-plugin : 2.5 : test (기본 테스트)
 dw.pig : 테스트 실패가 있습니다.

에 대한 E : \ Code \ Java \ workspace \ dw.pig \ target \ surefire-reports를 참조하십시오.
개별 테스트 결과.
        org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor
.java : 199)
        org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor
.java : 148)
        org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor
.java : 140)
        org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje에서
ct (LifecycleModuleBuilder.java:84)
        org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje에서
ct (LifecycleModuleBuilder.java:59)
        org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu에서
ild (LifecycleStarter.java:183)
        org.apache.maven.lifecycle.internal.LifecycleStarter.execute (Lifecycl
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)
        at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.
java : 39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAcces
sorImpl.java:25)
        java.lang.reflect.Method.invoke (Method.java:597)에서
        org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Laun
cher.java:290)
        org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.jav
a : 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 \ workspace \ dw.pig \ target \ surefire-reports를 참조하십시오.
개별 테스트 결과.
        org.apache.maven.plugin.surefire.SurefirePlugin.execute (SurefirePlugi
n.java:629)
        org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (Default
BuildPluginManager.java:107)
        org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor
.java : 195)
        ... 19 더
[오류]
[오류] 전체 디버그 로깅을 사용하려면 -X 스위치를 사용하여 Maven을 다시 실행하세요.
[오류]
[ERROR] 오류 및 가능한 해결 방법에 대한 자세한 내용은
d 다음 기사 :
[오류] [도움말 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc



답변

maven 테스트를 실행하면 java.lang.OutOfMemoryError가 발생합니다. 솔루션을 위해 Google을 검색하고 MAVEN_OPTS = -Xmx1024m을 내보내려고 시도했지만 작동하지 않았습니다.

do를 사용하여 Xmx옵션을 설정하면 MAVEN_OPTSMaven을 시작하는 데 사용되는 JVM이 구성됩니다. 즉, maven-surefire-plugin 은 기본적으로 새 JVM을 포크MAVEN_OPTS 하므로 전달되지 않습니다.

maven-surefire-plugin에서 사용하는 JVM의 크기를 구성하려면 다음 중 하나를 수행해야합니다.

  • 변경 forkModenever(메이븐 테스트에서 고립되지 않습니다 때문에 그리 좋은 생각을 할 수있는) ~ 나 ~
  • argLine매개 변수 사용 (올바른 방법) :

나중의 경우 다음과 같습니다.

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

하지만 저는 여기서 Stephen과 동의하는 경향이 있다고 말해야합니다. 테스트 중 하나에 문제가있을 가능성이 매우 높으며 더 많은 메모리를 제공하는 것이 문제를 “해결”(숨기기?)하는 올바른 해결책이라고 확신하지 못합니다.

참고 문헌


답변

Maven을 처음 접하는 사람들을 위해 (나와 같은) 여기에 pom의 빌드 섹션에 들어가는 전체 구성이 있습니다. 건배.

<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>


답변

문제가 Maven에 실행하도록 요청한 단위 테스트 중 하나에있을 가능성이 있습니다.

따라서 힙 크기를 조작하는 것은 잘못된 접근 방식입니다. 대신 OOME을 유발 한 단위 테스트를 살펴보고 그것이 단위 테스트의 결함인지 테스트중인 코드인지 알아 내야합니다.

스택 추적에서 시작하십시오. 없는 경우 옵션을 mvn ... test사용하여 다시 실행 하십시오 -e.


답변

이 문제를 일시적으로 해결하기 위해 가장 빠른 방법은 다음과 같습니다.

export JAVA_TOOL_OPTIONS="-Xmx1024m -Xms1024m"


답변

나는이 문제를 두 가지 방법으로 해결했습니다.

  1. pom.xml에이 구성 추가

    <configuration><argLine>-Xmx1024m</argLine></configuration>
  2. 1.6 대신 사용 된 JDK 1.7로 전환


답변

java.lang.OutOfMemoryError : Maven의 Java 힙 공간을 해결하려면 pom에서 아래 구성을 구성하십시오.

<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>


답변

힙 메모리 뿐만이 아닙니다. 또한 maven에서 해당 예외를 해결하기 위해 perm 크기를 늘리십시오. 환경 변수에서 이러한 변수를 사용하십시오.

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

예 :

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