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


106

当我创建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

我想念什么?

Answers:


157

当前版本:

SettingsPreferences在Mac上)| Build, Execution, Deployment| Compiler| 构建进程堆大小

旧版本:

SettingsPreferences在Mac上)| Compiler| Java Compiler| 最大堆大小

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


10
然后需要重新启动:)
cgl

9
实际上不是
jarandaf

11
我知道这有点题外话,但是如果有人遇到这个问题,可能会节省一些头发。我遇到了同样的问题,但是我的原因源于我mvn install在IntelliJ中进行操作时的情况。解决的办法是修改Settings | Maven | Runner | **VM Options** 我必须在那里尝试所有其他设置,直到我获得正确的设置为止。希望它能帮助某人。
FuriousGeorge 2013年

14
@ clankill3r试试Settings| Compiler| Build process heap size
CrazyCoder 2014年

5
对于Intellij的最新版本(我的版本是2016.1.3),此参数称为“构建进程堆大小(兆字节)”,可以在“设置|生成,执行,部署|编译器”中找到。
tomger

95

从IntelliJ 2016开始,该位置是“ 文件|文件”。设置| 构建,执行,部署| 编译器 构建进程堆大小

在此处输入图片说明


2
我将其更改为2000 MB,但它仍然对我不起作用。
R11G

5

我在Ant构建中也遇到了类似的问题(从IDEA GUI手动开始)。在我的情况下,有一个正确的解决方案是右键单击Ant任务,选择属性并将较高的值设置为“最大堆空间(Mb):”和“最大堆栈空间(Mb):”输入字段。

在此处输入图片说明


5

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

1)。在inteli中,转到“文件”>“设置选项”并搜索“ Vm选项”。在“导入程序的Vm选项”字段中,输入-Xmx512m。 Intelij设置选项

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

选择查看选项。 Java视图选项

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

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


您为什么要删除该链接?您担心这里发生什么吗?
Glorfindel

我给出了正确的答案,并把功劳归给了另一个网站,但我仍然可以看到我的answer.and两次否决票。我给出的答案实际上是我所面对并解决的正确答案。
吉米

请让我知道我是否可以归功于另一个网站。
Jimy

2
那个临时的投票是我的。如果您想获得荣誉,请链接到找到信息的确切页面,而不是教程列表。
疯狂的李

3

Intellij 12中的GWT

FWIW,我的GWT应用程序在“ Build | Build重建项目 “。

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

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

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


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无关。


0

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

通过更改Maven运行器设置,我可以摆脱它。

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


-3

有一个

idea64.exe

入门中

IntelliJ IDEA 13.1.5 \ bin

这样您可以解决更多空间。


尽管在上述问题的上下文中,此答案在某种程度上是正确的。idea64.exe确实为您提供了更多的permgen内存,如果您使用的是64位操作系统,请使用idea64.exe。发现它有用,因为在构建过程中用尽内存时,coz 32bit idea.exe崩溃了。
阿迪尔·拉扎
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.