java.lang.OutOfMemoryError:Maven中的Java堆空间

时间:2022-07-01 14:51:25

When I run maven test, java.lang.OutOfMemoryError happens. I google it for solutions and have tried to export MAVEN_OPTS=-Xmx1024m, but it did not work. Anyone know other solutions for this problem ,BTW I am using maven 3.0

当我运行maven test时,会发生java.lang.OutOfMemoryError。我谷歌它的解决方案,并试图导出MAVEN_OPTS = -Xmx1024m,但它没有用。任何人都知道这个问题的其他解决方案,BTW我正在使用maven 3.0

Thanks in advance

提前致谢

Paste the error message here when run "mvn test -e"

运行“mvn test -e”时粘贴错误信息

Failed tests:
  warning(junit.framework.TestSuite$1)
  testDefaultPigJob_1(com.snda.dw.pig.impl.DefaultPigJobLocalTest)
  testDefaultPigJob_2(com.snda.dw.pig.impl.DefaultPigJobLocalTest)

Tests run: 11, Failures: 3, Errors: 0, Skipped: 0

10/11/01 13:37:18 INFO executionengine.HExecutionEngine: Connecting to hadoop fi
le system at: file:///
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 30.063s
[INFO] Finished at: Mon Nov 01 13:37:18 PDT 2010
[INFO] Final Memory: 3M/6M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.
5:test (default-test) on project dw.pig: There are test failures.
[ERROR]
[ERROR] Please refer to E:\Code\Java\workspace\dw.pig\target\surefire-reports fo
r the individual test results.
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal o
rg.apache.maven.plugins:maven-surefire-plugin:2.5:test (default-test) on project
 dw.pig: There are test failures.

Please refer to E:\Code\Java\workspace\dw.pig\target\surefire-reports for the in
dividual test results.
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:199)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:148)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:140)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:84)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:59)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu
ild(LifecycleStarter.java:183)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl
eStarter.java:161)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:314)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:151)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:445)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:168)
        at 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)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
cher.java:290)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
a:230)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
uncher.java:409)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
352)
Caused by: org.apache.maven.plugin.MojoFailureException: There are test failures
.

Please refer to E:\Code\Java\workspace\dw.pig\target\surefire-reports for the in
dividual test results.
        at org.apache.maven.plugin.surefire.SurefirePlugin.execute(SurefirePlugi
n.java:629)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
BuildPluginManager.java:107)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:195)
        ... 19 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc

8 个解决方案

#1


140  

When I run maven test, java.lang.OutOfMemoryError happens. I google it for solutions and have tried to export MAVEN_OPTS=-Xmx1024m, but it did not work.

当我运行maven test时,会发生java.lang.OutOfMemoryError。我谷歌它的解决方案,并试图导出MAVEN_OPTS = -Xmx1024m,但它没有用。

Setting the Xmx options using MAVEN_OPTS does work, it does configure the JVM used to start Maven. That being said, the maven-surefire-plugin forks a new JVM by default, and your MAVEN_OPTS are thus not passed.

使用MAVEN_OPTS设置Xmx选项确实有效,它确实配置了用于启动Maven的JVM。话虽这么说,maven-surefire-plugin默认会分配一个新的JVM,因此你的MAVEN_OPTS不会被传递。

To configure the sizing of the JVM used by the maven-surefire-plugin, you would either have to:

要配置maven-surefire-plugin使用的JVM的大小,您可能必须:

  • change the forkMode to never (which is be a not so good idea because Maven won't be isolated from the test) ~or~
  • 将forkMode更改为never(这不是一个好主意,因为Maven不会与测试隔离)〜或〜
  • use the argLine parameter (the right way):
  • 使用argLine参数(正确的方法):

In the later case, something like this:

在后一种情况下,这样的事情:

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

But I have to say that I tend to agree with Stephen here, there is very likely something wrong with one of your test and I'm not sure that giving more memory is the right solution to "solve" (hide?) your problem.

但我必须说我倾向于同意斯蒂芬在这里,你的测试之一很可能出现问题,而且我不确定提供更多内存是解决问题(隐藏?)的正确解决方案。

References

#2


56  

For those new to Maven (like me) here is the whole config that goes in the build section of your pom. Cheers.

对于那些刚接触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>

#3


8  

The chances are that the problem is in one of the unit tests that you've asked Maven to run.

可能是问题出在你要求Maven运行的单元测试中。

As such, fiddling with the heap size is the wrong approach. Instead, you should be looking at the unit test that has caused the OOME, and trying to figure out if it is the fault of the unit test or the code that it is testing.

因此,摆弄堆大小是错误的方法。相反,您应该查看导致OOME的单元测试,并尝试确定它是单元测试的错误还是它正在测试的代码。

Start by looking at the stack trace. If there isn't one, run mvn ... test again with the -e option.

首先查看堆栈跟踪。如果没有,请使用-e选项再次运行mvn ... test。

#4


5  

I have solved this problem on my side by 2 ways:

我通过两种方式解决了这个问题:

  1. Adding this configuration in pom.xml

    在pom.xml中添加此配置

    <configuration><argLine>-Xmx1024m</argLine></configuration>
    
  2. Switch to used JDK 1.7 instead of 1.6

    切换到使用JDK 1.7而不是1.6

#5


5  

To temporarily work around this problem, I found the following to be the quickest way:

为了暂时解决这个问题,我发现以下是最快的方法:

export JAVA_TOOL_OPTIONS="-Xmx1024m -Xms1024m"

#6


1  

In order to resolve java.lang.OutOfMemoryError: Java heap space in Maven, try to configure below configuration in pom

为了解决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>

#7


-1  

Set the environment variable:

设置环境变量:

MAVEN_OPTS="-Xmx1024m"

MAVEN_OPTS = “ - Xmx1024m”

#8


-1  

Not only heap memory. also increase perm size to resolve that exception in maven use these variables in environment variable.

不仅是堆内存。还要增加perm大小来解决maven中的异常,在环境变量中使用这些变量。

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

Example :

示例:

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

#1


140  

When I run maven test, java.lang.OutOfMemoryError happens. I google it for solutions and have tried to export MAVEN_OPTS=-Xmx1024m, but it did not work.

当我运行maven test时,会发生java.lang.OutOfMemoryError。我谷歌它的解决方案,并试图导出MAVEN_OPTS = -Xmx1024m,但它没有用。

Setting the Xmx options using MAVEN_OPTS does work, it does configure the JVM used to start Maven. That being said, the maven-surefire-plugin forks a new JVM by default, and your MAVEN_OPTS are thus not passed.

使用MAVEN_OPTS设置Xmx选项确实有效,它确实配置了用于启动Maven的JVM。话虽这么说,maven-surefire-plugin默认会分配一个新的JVM,因此你的MAVEN_OPTS不会被传递。

To configure the sizing of the JVM used by the maven-surefire-plugin, you would either have to:

要配置maven-surefire-plugin使用的JVM的大小,您可能必须:

  • change the forkMode to never (which is be a not so good idea because Maven won't be isolated from the test) ~or~
  • 将forkMode更改为never(这不是一个好主意,因为Maven不会与测试隔离)〜或〜
  • use the argLine parameter (the right way):
  • 使用argLine参数(正确的方法):

In the later case, something like this:

在后一种情况下,这样的事情:

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

But I have to say that I tend to agree with Stephen here, there is very likely something wrong with one of your test and I'm not sure that giving more memory is the right solution to "solve" (hide?) your problem.

但我必须说我倾向于同意斯蒂芬在这里,你的测试之一很可能出现问题,而且我不确定提供更多内存是解决问题(隐藏?)的正确解决方案。

References

#2


56  

For those new to Maven (like me) here is the whole config that goes in the build section of your pom. Cheers.

对于那些刚接触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>

#3


8  

The chances are that the problem is in one of the unit tests that you've asked Maven to run.

可能是问题出在你要求Maven运行的单元测试中。

As such, fiddling with the heap size is the wrong approach. Instead, you should be looking at the unit test that has caused the OOME, and trying to figure out if it is the fault of the unit test or the code that it is testing.

因此,摆弄堆大小是错误的方法。相反,您应该查看导致OOME的单元测试,并尝试确定它是单元测试的错误还是它正在测试的代码。

Start by looking at the stack trace. If there isn't one, run mvn ... test again with the -e option.

首先查看堆栈跟踪。如果没有,请使用-e选项再次运行mvn ... test。

#4


5  

I have solved this problem on my side by 2 ways:

我通过两种方式解决了这个问题:

  1. Adding this configuration in pom.xml

    在pom.xml中添加此配置

    <configuration><argLine>-Xmx1024m</argLine></configuration>
    
  2. Switch to used JDK 1.7 instead of 1.6

    切换到使用JDK 1.7而不是1.6

#5


5  

To temporarily work around this problem, I found the following to be the quickest way:

为了暂时解决这个问题,我发现以下是最快的方法:

export JAVA_TOOL_OPTIONS="-Xmx1024m -Xms1024m"

#6


1  

In order to resolve java.lang.OutOfMemoryError: Java heap space in Maven, try to configure below configuration in pom

为了解决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>

#7


-1  

Set the environment variable:

设置环境变量:

MAVEN_OPTS="-Xmx1024m"

MAVEN_OPTS = “ - Xmx1024m”

#8


-1  

Not only heap memory. also increase perm size to resolve that exception in maven use these variables in environment variable.

不仅是堆内存。还要增加perm大小来解决maven中的异常,在环境变量中使用这些变量。

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

Example :

示例:

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