Maven抛出"java.lang.OutOfMemoryError"异常

37

我正在使用 "mvn install" 编译一个开源项目,但是遇到了 java.lang.OutOfMemoryError: Java heap space。我尝试执行 java -Xmx256m,但输出了 java 概要,指示它是无效命令。

我正在使用 jdk1.5.0_08,你有任何想法为什么会发生这种情况吗?

谢谢,


2
这是一个开放性问题 ;) 答案可能是 MAVEN_OPTS="-Xmx513m" 等等。 ;) - cetnar
9个回答

55

设置环境变量:

MAVEN_OPTS="-Xmx512m"

12
有时候增加永久代内存空间也是有好处的 - MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"。 - cetnar
2
仅设置 MAVEN_OPTS 是不够的,如果在运行单元测试时构建失败。在这种情况下,您可能需要显式配置 maven-surefire-plugin 的 "argLine"。 - James Selvakumar
1
我在运行mvn install时遇到了这个错误,使用“mvn install -DMAVEN_OPTS=-Xmx1024m”解决了我的问题! - Surekha

19

这取决于哪个JVM实例需要更多的内存。

例如,如果测试被分叉(默认情况下),并由于OutOfMemoryError而失败,请尝试配置启动它们的插件:

        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <argLine>-Xmx1024m</argLine>
            </configuration>
        </plugin>

我可以同时添加Xmx1024m -Xms1024m吗? - TomJava
没错,<argLine>-Xmx1g -Xms1g</argLine> 应该可以工作。 - Andriy Plokhotnyuk

9

不仅需要增加堆内存,还需要增加 perm 大小来解决 Maven 中的异常。

在环境变量中使用以下变量:

变量名:MAVEN_OPTS
变量值:-Xmx512m -XX:MaxPermSize=256m


你如何获取XmxMaxPermSize的当前值?毕竟,如果不知道已经设置了什么值,就无法增加这些值。 - ArtOfWarfare
我不确定MaxPermSize,但Xmx通常是物理内存的四分之一。同样,这可能会因JRE实现和/或JVM的“服务器”,“客户端”模式而有所不同。 - James Selvakumar
-bash: export: `-XX:MaxPermSize=256m': 不是一个有效的标识符。 - user2568374

6

1
在类Unix系统上:
export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=512m"

内存溢出错误


0

或者在命令提示符下运行时使用set MAVEN_OPTS="-XX:MaxPermSize=256m"


0

我在Ubuntu上经常与我的shell一起使用它:

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

-1

尝试更改或更新您的Maven安装。我曾经遇到过这个问题,但通过升级Maven(从3.0.5到3.3.3)解决了它。


-5

我遇到了同样的问题。根据这个链接,更改jvm实现可能会有所帮助 - 这可以通过设置JAVA_HOME系统变量来完成。

例如,尝试在提到的链接中使用ibm jvm或oracle jrockit:

SET JAVA_HOME=C:\bea10\jrockit160_22
mvn install

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接