如何给 Intellij 编译器更多的堆空间?

当我做一个 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

我错过了什么?

154194 次浏览

最新版本:

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

旧版本:

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

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

Intellij 12中的 GWT

FWIW,在‘ 生成 | 重建项目’期间,我的 GWT 应用程序也出现了类似的错误。

这是由于 Intellij 做了一个完整的 GWT 编译,我不喜欢它,因为它也是一个非常冗长的过程。

我通过关闭“ < em > 项目结构 | Facets | GWT ”下的模块复选框来禁用 GWT 编译。

或者,在该位置也有一个“ 编译器最大堆大小”设置。

在我的例子中,错误是由于分配给“测试”生命周期的内存不足造成的。通过将 <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 无关; 在本例中)。

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

有一个

创意64.exe

开始

IntelliJ IDEA 13.1.5 bin

这样你可以处理更多的空间。

自从2016年的情报,地点是 文件 | 设置 | 构建、执行、部署 | 编译器 | 构建进程堆大小

enter image description here

我在构建 Ant 时也遇到过类似的问题(从 IDEA GUI 手工开始)。在我的案例中,有一个正确的解决方案,可以右键单击 Ant 任务,选择 properties,并将一个较高的值设置为“ Maximalheapspace (Mb) :”和“ Maximalstackspace (Mb) :”input 字段。

enter image description here

要解决这个问题,请遵循以下给定的步骤-

1).在智能转到文件 > 设置选项和搜索 Vm 选项在进口商的 Vm 选项字段中给出值-Xmx512m。 Intelij 设置选项

2).转到控制面板选择视图通过: 大图标然后转到 Java 一个提示窗口将出现名称 Java 控制面板 java 控制面板然后转到 Java Java 虚拟机选项

选择视图选项。 Java 视图选项

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

3)。如果上面给出的选项不起作用,那么改变 pom.xml 的大小

在使用 maven install 命令构建项目时,我遇到了“ Java.lang. OutOfMemory yError: Java 堆空间”错误。

我可以通过改变 Maven 跑步者的设置来摆脱它。

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

我喜欢分享我得到的启示。当您构建一个项目时,IntelliJ Ideas 运行一个位于其核心的 java 进程(例如: C: Program Files JetBrains IntelliJ IDEA 2020.3 jbr bin)。正如许多其他人所提到的,“构建进程堆大小”改变了 这个 java 进程的堆大小。然而,主 java 进程稍后由 Ideas 的 java 进程触发,因此具有不同的 VM 参数。我注意到这个进程的最大堆大小是 Ideas 的 java 进程的1/3,而 min 堆大小是 max (1/6)的一半。总结:

当你在“构建进程堆大小”上设置9g 堆时,编译器的实际堆大小是最大3g 和最小1,5 g,不需要重新启动。

PS: 在2020.3版本上测试

在安卓工作室4.2或更新的北极狐版本,您将选择在外观和行为

  1. Windows: 文件 > 设置 > 外观和行为 > 系统设置 > 内存设置
  2. Mac: file > 偏好 > 外观和行为 > 系统设置 > 内存设置

Https://i.stack.imgur.com/peqbk.png