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

标签 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 不是一种选择。

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

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

对可能发生的事情有什么想法吗?


编辑:对于任何感兴趣的人,我仍然没有弄清楚这个错误。我对我的计算机进行了完全重新镜像,但问题似乎仍在发生,这让我相信它实际上可能是物理问题。我也在考虑这可能与内存泄漏或内存碎片有关,导致 malloc 在 java 尝试分配内存时失败,但我不确定为什么会这样 - 特别是当相同的设置似乎有效时在其他人的计算机上。

最佳答案

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 中设置它们选项 文本框。假设你已经有了 XX:MaxPermSize 设置,你可以尝试这样的事情:

-XX:MaxPermSize=256m -Xmx1024m

它将最大分配池设置为 1024 MB 并为 PermGen 设置最大 256 MB

关于java - 使用 Apache Maven 在 IntelliJ 中构建 Java 项目的内存问题,发生在 Java 7 中,使用 Java 8 构建良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28499813/

相关文章:

spring - 如何从 Spring 中对 Websphere 应用服务器中定义的 MQ 连接工厂进行 jndi 查找

java - CXF 冲突 xmlschema 和 xmlschema-core 依赖

java - 在 sysout 输出中将对象转换为 String,java

java - 在 spring mvc 中,如何将信息存储在 session 内存中以便稍后获取?

java - If,Else 语句跳过第二个条件

java - 如何拦截java中的方法

java - Spring Boot 应用程序未在外部 Tomcat 中启动(在 Tomcat 8.5 和 10 中均尝试过)

maven - 如何为Maven依赖关系生成Javadoc

java - hystrix java.lang.NoSuchMethodError : rx. 主题.BehaviorSubject.hasValue()Z

java - 用正则表达式替换特定标识符