【问题标题】:Maven throws "java.lang.OutOfMemoryError"Maven 抛出“java.lang.OutOfMemoryError”
【发布时间】:2009-12-17 07:30:33
【问题描述】:

我正在用“mvn install”编译一个开源项目,但最终得到了java.lang.OutOfMemoryError: Java heap space。我尝试执行java -Xmx256m,但输出是 java 概要,表明它是无效命令。

我正在使用jdk1.5.0_08,您知道为什么会这样吗?

谢谢,

【问题讨论】:

  • 这是一个未解决的问题 ;) 答案可能是 MAVEN_OPTS="-Xmx513m" 等等 ;)

标签: java maven-2 out-of-memory


【解决方案1】:

设置环境变量:

MAVEN_OPTS="-Xmx512m"

【讨论】:

  • 有时也可以扩展 perm 内存大小 - MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=256m"
  • 如果在运行单元测试时构建失败,单独设置 MAVEN_OPTS 是不够的。在这种情况下,您可能需要显式配置 maven-surefire-plugin 的“argLine”。
  • 我在安装 mvn 时遇到此错误,使用“mvn install -DMAVEN_OPTS=-Xmx1024m”解决了我的问题!
【解决方案2】:

这取决于哪个 JVM 实例需要更多内存。 例如,如果测试是分叉的(默认情况下),并且由于 OutOfMemoryError 而失败,然后尝试配置启动它们的插件:

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

【讨论】:

  • 我也可以添加 Xmx1024m -Xms1024m 吗?
  • 是的,-Xmx1g -Xms1g 应该可以工作
【解决方案3】:

不仅是堆内存。您还必须增加烫发大小才能在 Maven 中解决该异常 在环境变量中使用这些变量。

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

【讨论】:

  • 如何获取XmxMaxPermSize的当前值?毕竟,我无法在不知道它们已经设置为什么的情况下增加这些值。
  • 我不确定 MaxPermSize,但 Xmx 通常是物理内存的 1/4。同样,这可能因 JRE 实现和/或 JVM 的“服务器”、“客户端”模式而异。
  • -bash: export: `-XX:MaxPermSize=256m': 不是一个有效的标识符
【解决方案4】:

有时,如果您在 maven 中使用其他程序,例如在集成测试或 Surefire 中,则 MAVEN_OPTS 是不够的。除了 MAVEN_OPTS,尝试使用 JAVA_TOOL_OPTIONS。在 Maven 中运行一些集成测试时,这对我有用:

export JAVA_TOOL_OPTIONS="-Xmx2048m -XX:MaxPermSize=1024m -Xms2048m"

参考: osx maven running tests Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"

【讨论】:

    【解决方案5】:

    在类 Unix 系统上:

    export MAVEN_OPTS="-Xmx1024m -XX:MaxPermSize=512m"
    

    OutOfMemoryError

    【讨论】:

      【解决方案6】:

      从命令提示符运行时也可以使用set MAVEN_OPTS="-XX:MaxPermSize=256m"

      【讨论】:

        【解决方案7】:

        我总是在 ubuntu 上将它与我的 shell 一起使用:

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

        【讨论】:

          【解决方案8】:

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

          【讨论】:

            【解决方案9】:

            我遇到了同样的问题。根据this link,它可能有助于更改 jvm 实现 - 这可以通过设置 JAVA_HOME 系统变量来完成。

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

            SET JAVA_HOME=C:\bea10\jrockit160_22
            mvn install
            

            【讨论】:

              猜你喜欢
              • 2019-12-31
              • 1970-01-01
              • 2023-03-21
              • 2016-04-15
              • 2016-05-01
              • 1970-01-01
              • 2014-08-30
              • 2018-07-24
              • 2014-06-21
              相关资源
              最近更新 更多