如何为Intellij编译器提供更多堆空间?

时间:2011-12-20 20:26:13

标签: intellij-idea

当我创建一个Intellij项目时,我不断收到以下内存错误。

我已经在idea.vmoptions中增加了我的堆大小:

-Xms128m
-Xmx2048m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=64m
-ea

但我仍然会收到此错误:

Information:The system is out of resources.
Information:Consult the following stack trace for details.
Information:java.lang.OutOfMemoryError: Java heap space
Information:    at com.sun.tools.javac.util.Position$LineMapImpl.build(Position.java:139)
Information:    at com.sun.tools.javac.util.Position.makeLineMap(Position.java:63)
Information:    at com.sun.tools.javac.parser.Scanner.getLineMap(Scanner.java:1105)
Information:    at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:512)
Information:    at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:550)
Information:    at com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:804)
Information:    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:727)
Information:    at com.sun.tools.javac.main.Main.compile(Main.java:353)
Information:    at com.sun.tools.javac.main.Main.compile(Main.java:279)
Information:    at com.sun.tools.javac.main.Main.compile(Main.java:270)
Information:    at com.sun.tools.javac.Main.compile(Main.java:69)
Information:    at com.sun.tools.javac.Main.main(Main.java:54)
Information:    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Information:    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
Information:    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
Information:    at java.lang.reflect.Method.invoke(Method.java:597)
Information:    at com.intellij.rt.compiler.JavacRunner.main(JavacRunner.java:71)
Information:Compilation completed with 1 error and 0 warnings
Information:1 error
Information:0 warnings
Error:Compiler internal error. Process terminated with exit code 3

我错过了什么?

9 个答案:

答案 0 :(得分:124)

当前版本:

Settings(Mac上为Preferences)| Build, Execution, Deployment | Compiler | 构建流程堆大小

旧版本:

Settings(Mac上为Preferences)| Compiler | Java Compiler | 最大堆大小

默认情况下,编译器在单独的JVM中运行,因此您在idea.vmoptions中设置的IDEA堆设置对编译器没有影响。

答案 1 :(得分:80)

自IntelliJ 2016起,位置为文件|设置|构建,执行,部署|编译器|构建流程堆大小

enter image description here

答案 2 :(得分:3)

Intellij 12中的GWT

FWIW,我在' Build |期间遇到了与我的GWT应用程序类似的错误重建项目'。

这是由Intellij进行完整的GWT编译引起的,我不喜欢这样做,因为它也是一个非常漫长的过程。

我通过关闭' 项目结构|下的模块复选框来禁用GWT编译方面| GWT ”。

此外,该位置还有一个“编译器最大堆大小”设置。

答案 3 :(得分:2)

我在Ant构建方面遇到了类似的问题(从IDEA GUI手动启动)。在我的例子中,右键单击Ant任务是正确的解决方案,选择属性并将更高的值设置为"最大堆空间(Mb):"和"最大堆栈空间(Mb):"输入字段。

enter image description here

答案 4 :(得分:2)

要解决此问题,请执行以下给定步骤-

1)。在inteli中,转到“文件”>“设置选项”并搜索“ Vm选项”。在“进口商的Vm选项”字段中,输入-Xmx512m。 Intelij Setting Options

2)。转到“控制面板”选择“查看方式:大图标”,然后转到“ Java”,一个提示窗口将出现,名称为 java control pannel ,然后转到Java Java VM Options

选择查看选项。 java view options

在Java运行时环境中,将传递运行时参数设置为 -Xmx1024m

3)。如果以上给定的选项不起作用,则更改pom.xml的大小

答案 5 :(得分:1)

在使用maven安装命令构建项目时,我遇到“ java.lang.OutOfMemoryError:Java堆空间”错误。

我能够通过更改Maven跑步者设置来摆脱它。

Settings | Build, Execution, Deployment | Build Tools | Maven | Runner | VM options -Xmx512m

答案 6 :(得分:0)

在我的情况下,错误是由分配给maven的“测试”生命周期的内存不足引起的。通过将<argLine>-Xms3512m -Xmx3512m</argLine>添加到:

来解决此问题
<pluginManagement>
  <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.16</version>
        <configuration>
            <argLine>-Xms3512m -Xmx3512m</argLine>

感谢@crazycoder指出这一点(并且它与IntelliJ无关;在这种情况下)。

  

如果您的测试是分叉的,它们将在不继承Maven JVM选项的新JVM中运行。必须通过pom.xml中的测试运行器提供自定义内存选项,有关详细信息,请参阅Maven文档,它与IDE几乎没有关系。

答案 7 :(得分:0)

我喜欢分享我的一个启示。当您构建项目时,Intellij Idea 会运行一个驻留在其核心中的 Java 进程(例如:C:\Program Files\JetBrains\IntelliJ IDEA 2020.3\jbr\bin)。正如许多其他人所提到的,“构建进程堆大小”改变了这个 java 进程的堆大小。但是,主java进程稍后由Idea的java进程触发,因此具有不同的VM参数。我注意到这个进程的最大堆大小是 Idea 的 java 进程的 1/3,而最小堆是 max(1/6) 的一半。四舍五入:

当您在“构建进程堆大小”上设置 9g 堆时,编译器的实际堆大小最大为 3g,最小为 1.5g。并且不需要重启。

PS:在 2020.3 版本上测试

答案 8 :(得分:-3)

有一个

  

idea64.exe

启动器

  

IntelliJ IDEA 13.1.5 \ bin

这样你就可以占用更多空间。