11

我是 Maven 来构建我的 Java 项目。经过几次成功的构建,我现在收到以下错误:

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

在我的构建使用的 maven.sh 文件中,我添加了以下内容作为第一行

export MAVEN_OPTS=-Xmx512m

我仍然收到错误消息。

任何人都可以建议修复吗?

4

10 回答 10

16

解决方案是将 maven-surefire-plugin 的 forkMode 设置为“从不”。似乎在运行测试时,maven sure fire 会产生一个新的 JVM。将其设置为从不解决问题。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.7.2</version>
    <configuration>
        **<forkMode>never</forkMode>**
        <argLine>-Xms1024m -Xmx1024m -XX:MaxPermSize=2048m</argLine>
        <systemPropertyVariables>
            <user.name>${user.name}</user.name>
        </systemPropertyVariables>
    </configuration>
</plugin>
于 2012-08-08T14:15:11.237 回答
12

我有同样的问题,我认为 Maven 没有使用正确的 jvm。你可以检查这个

mvn -version

在我的情况下,我指定的 jvmJAVA_HOMEPATH正确:我使用的是 x86 jdk 6 而不是 x64 jdk 7。修复此问题解决了问题。

于 2013-11-28T16:11:26.120 回答
3

我在尝试构建 Cloudera Navigator SDK 示例时遇到了同样的问题。我使用的是 32 位 JVM,编译似乎正常,但之后的测试因以下错误而失败:

Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap

我尝试设置 MAVEN_OPTS=-Xmx512m 但这没有效果 - 它失败并显示相同的消息。即使错误消息中的 2097152KB 的值仍然相同(奇怪!)。

我终于发现堆大小值已在 pom.xml 文件中为测试进行了硬编码!它有过

<argLine>-Xmx2048m ...
</argline>

我编辑了 pom.xml 并将其更改为 -Xmx1024m 然后 maven 能够毫无问题地构建和测试所有内容。

因此,从中得到的教训是,如果您正在构建其他人(例如 Cloudera)给您的东西并且您收到这样的错误,请仔细检查 pom.xml 以查看该设置是否在其中进行了硬编码。

仅供参考-我认为使用 64 位 JVM 也可能解决此问题,但我无法切换到 64 位。我们还有一些其他的东西需要让它工作,它说它只适用于 32 位 JVM(我真的不能比这里更详细地解释)。

于 2017-05-18T03:19:59.170 回答
2

我认为您希望通过设置保留比现有空间更多的空间: MAVEN_OPTS=-Xmx512m

尝试将其设置得较低,因为 Maven 仅在它可以保留整个空间时才会启动。这个问题发生在我身上,我可以像描述的那样解决它。

于 2013-12-05T18:54:44.143 回答
2

尝试设置变量: MAVEN_OPTS = -Xmx512m -XX:MaxPermSize=128m

于 2014-11-19T12:04:50.670 回答
2

更改为 MAVEN_OPTS = -Xmx512m 在 Windows 64 位上帮助了我。

于 2015-05-04T08:32:13.113 回答
1

尝试 Java 64 位并将您的 java_home 配置为此 Java 64。 obs.: javac -version 和 mvn -version 需要返回此 Java 64。

于 2015-07-27T16:02:35.733 回答
0

In IDEA IntelliJ IDE there is a setting on Maven -> Runner to use a specific JVM. The default for me was to use the JRE and not the JDK set on JAVA_HOME. Make sure to check that setting. Once i switched to use JAVA_HOME everything ran fine.

于 2014-01-28T21:57:17.030 回答
0

正如上面的迪迪埃L所说

这正是我遇到的问题,我们运行的是 x86 JVM 而不是 64 位...

当我更改为 64 位 JVM 时,它解决了我的问题。

于 2013-12-28T06:35:33.310 回答
0

我试过这个,它对我有用-

maven版本-3.2.5 java版本-jdk1.7.0_10

-Xmx600m -XX:PermSize=256m

于 2015-05-18T13:37:30.457 回答