使用Apache Maven在IntelliJ中构建Java项目的内存问题,与Java 7一起发生,使用Java 8构建良好

时间:2015-02-13 12:38:27

标签: java spring maven intellij-idea

尝试使用Apache Maven在IntelliJ 14.0.3中构建Java项目时收到以下错误:

Error: Abnormal build process termination
       Error occurred during initialization of VM
       Could not reserve enough space for object heap
       Error: Could not create the Java Virtual Machine
       Error: A fatal exception has occurred. Program will exit.

我使用的是Java 1.7.0_75。但是,如果我将项目切换为使用Java 1.8.0_25,那么项目将构建。唯一的问题是我使用Spring 2.5,它认为Java 1.8是Java 1.4,这会导致其他问题。不幸的是升级Spring不是一种选择。

我正在运行带有8GB RAM的Windows 7 Enterprise 64位,最近从4gb升级。当我收到此错误时,有足够的可用内存,并且我已在idea.exe.vmoptions文件中为IntelliJ分配了1024mb。

对于使用相同版本的Java构建同一项目的其他人来说,这个问题似乎不会发生。他们正在使用IntelliJ 13.1.4,他们在idea.exe.vmoptions.中也只分配了512mb我最初使用的是IntelliJ 13.1.4,并且收到了与我现在收到的类似的错误。

关于可能发生的事情的任何想法?


编辑:对于任何有兴趣的人,我仍然没有想到这个错误。我让我的电脑完全重新成像,问题似乎仍在发生,这让我相信它实际上可能是物理上的东西。我也在考虑可能它与内存泄漏或碎片内存有关,导致malloc在java尝试分配内存时失败,但我不确定为什么会出现这种情况 - 特别是当相同的设置似乎致力于其他人民的工作计算机。

2 个答案:

答案 0 :(得分:1)

您是否有XX:MaxPermSize=的显式内存设置?此错误意味着JVM无法启动,因为提供给它的选项没有为堆空间留下足够的内存。

与Java 8的区别可能是因为Java 8在JVM中不再具有永久生成空间,因此忽略了XX:MaxPermSize选项。

请参阅Could not reserve enough space for object heap作为此类错误的示例。

您可以在Build, Execution, Deployment > Build Tools > Maven > Runner下的IntelliJ首选项中更改将传递给maven命令的内存选项,并将其设置在VM Options文本框中。假设你已经设置了XX:MaxPermSize,你可以尝试这样的事情:

-XX:MaxPermSize=256m -Xmx1024m

将PermGen的最大分配池设置为1024 MB,最多设置为256 MB

答案 1 :(得分:0)

我尝试使用Run运行应用程序时遇到了同样的错误 - > Debug和"错误:异常构建过程终止"消息就不会消失。然后我尝试使用Run运行应用程序 - >运行并成功运行。回去试图调试应用程序,它开始工作。不确定这对你的情况是否有帮助,但我认为我可以分享我的经验。