【问题标题】:How can I give the Intellij compiler more heap space?如何给 Intellij 编译器更多的堆空间?
【发布时间】:2012-08-01 11:42:46
【问题描述】:

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

我错过了什么?

【问题讨论】:

    标签: intellij-idea


    【解决方案1】:

    在 android studio 4.2 或更新的北极狐版本上,您将在外观和行为下进行选择

    1. Windows:文件 > 设置 > 外观和行为 > 系统设置 > 内存设置
    2. Mac:文件 > 首选项 > 外观和行为 > 系统设置 > 内存设置

    https://i.stack.imgur.com/PEqBK.png

    【讨论】:

      【解决方案2】:

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

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

      PS:在 2020.3 版本上测试

      【讨论】:

        【解决方案3】:

        我在使用 maven install 命令构建项目时遇到“java.lang.OutOfMemoryError: Java heap space”错误。

        我可以通过更改 maven runner 设置来摆脱它。

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

        【讨论】:

          【解决方案4】:

          要解决此问题,请按照以下步骤操作-

          1)。在 inteli 中,转到 File> Setting Option 并搜索 Vm Option 在 Importer 的 Vm Option 字段中,输入值 -Xmx512m。 Intelij Setting Options

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

          选择查看选项。 java view options

          在Java运行时环境设置中通过运行时参数为-Xmx1024m

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

          【讨论】:

          • 你为什么edit 退出了那个链接?你害怕here发生的事情吗?
          • 我已经给出了正确的答案,并且我已经将功劳归功于另一个网站,但我仍然可以看到我的答案有两个反对意见。我给出的答案实际上是正确的,我已经面对并解决了它。
          • 请让我知道我是否可以将功劳归功于另一个网站。
          • 临时投反对票是我的。如果您想表扬,请链接到您找到该信息的确切页面,而不是教程列表。
          【解决方案5】:

          当前版本:

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

          旧版本:

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

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

          【讨论】:

          • 之后需要重启:)
          • 我知道这有点离题,但如果他们遇到这个可能会节省一些头发。我遇到了同样的问题,但我的问题源于我在 IntelliJ 中执行mvn install 时的问题。解决方案是修改Settings | Maven | Runner | **VM Options** 我必须尝试其中的所有其他设置,直到我做对了。希望它可以帮助某人。
          • 我可以找到它直到`最大堆大小`我必须将它添加为额外的命令行参数吗?
          • @clankill3r 试试Settings | Compiler | Build process heap size.
          • 对于较新版本的 Intellij(我的是 2016.1.3),此参数称为“构建进程堆大小(Mbytes)”,可以在“设置 | 构建、执行、部署 | 编译器”中找到.
          【解决方案6】:

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

          【讨论】:

          • 我将其更改为 2000 MB,但它仍然不适合我。
          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            有一个

            idea64.exe

            开始

            IntelliJ IDEA 13.1.5\bin

            这样您就可以处理更多空间。

            【讨论】:

            • 这个答案在某种程度上是正确的,尽管不在上述问题的上下文中。 idea64.exe 确实为您提供了更多永久内存,如果您使用的是 64 位操作系统,请使用 idea64.exe。发现它很有用,因为 32 位 idea.exe 在构建期间用完内存时崩溃。
            【解决方案9】:

            在我的情况下,错误是由于分配给 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 中的 test runner 提供,详情请参考 Maven 文档,与 IDE 关系不大。

            【讨论】:

              【解决方案10】:

              Intellij 12 中的 GWT

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

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

              我通过关闭 'Project Structure | 下的模块复选框禁用了 GWT 编译。刻面 | GWT'。

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

              【讨论】:

                猜你喜欢
                • 2011-01-18
                • 1970-01-01
                • 2018-05-28
                • 1970-01-01
                • 2021-11-26
                • 2022-01-21
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多