【问题标题】:IntelliJ Idea giving java.lang.OutOfMemoryError: Java heap space error even after increasing heap sizeIntelliJ Idea 给出 java.lang.OutOfMemoryError: Java heap space error 即使在增加堆大小之后
【发布时间】:2013-07-30 23:47:23
【问题描述】:

在 IntelliJ Idea 上编译我的 android 项目时,我反复收到 java.lang.OutOfMemoryError: Java heap space 错误。

我通过链接here 增加了我的java 堆空间,但这并没有解决问题。有趣的是,有时我的应用程序会编译,而有时由于 java 堆空间错误,应用程序不会编译。即使我没有对应用程序进行任何更改,它有时也会编译并有时会失败。

知道如何解决这个问题吗?

我正在编译一个 android 项目,可能是由于我拥有大量或资源(可绘制 hdpi、xhdpi、xxhdpi、large-hdpi、large-xhdpi、large-xxhdpi)吗?但是话又说回来,就像我说的那样,它有时会编译,有时却不会。我每次尝试编译大约 10 次,幸运的是它会成功一次。

这是错误:

内部错误:(java.lang.OutOfMemoryError) Java 堆空间 java.lang.OutOfMemoryError:Java 堆空间位于 java.util.Arrays.copyOf(Arrays.java:2271) 在 com.intellij.util.io.UnsyncByteArrayOutputStream.write(UnsyncByteArrayOutputStream.java:52) 在 com.intellij.util.io.DataOutputStream.write(DataOutputStream.java:34) 在 java.io.FilterOutputStream.write(FilterOutputStream.java:97) 在 com.intellij.util.io.IOUtil.writeString(IOUtil.java:63) 在 org.jetbrains.jps.incremental.storage.OneToManyPathsMapping$PathCollectionExternalizer.save(OneToManyPathsMapping.java:87) 在 org.jetbrains.jps.incremental.storage.OneToManyPathsMapping$PathCollectionExternalizer.save(OneToManyPathsMapping.java:84) 在 org.jetbrains.jps.incremental.storage.AbstractStateStorage$1.append(AbstractStateStorage.java:103) 在 com.intellij.util.io.PersistentHashMap.doAppendData(PersistentHashMap.java:371) 在 com.intellij.util.io.PersistentHashMap.appendData(PersistentHashMap.java:358) 在 org.jetbrains.jps.incremental.storage.AbstractStateStorage.appendData(AbstractStateStorage.java:101) 在 org.jetbrains.jps.incremental.storage.OneToManyPathsMapping.appendData(OneToManyPathsMapping.java:50) 在 org.jetbrains.jps.incremental.storage.SourceToOutputMappingImpl.appendOutput(SourceToOutputMappingImpl.java:50) 在 org.jetbrains.jps.builders.impl.BuildOutputConsumerImpl.registerOutputFile(BuildOutputConsumerImpl.java:65) 在 org.jetbrains.jps.android.AndroidResourceCachingBuilder.runPngCaching(AndroidResourceCachingBuilder.java:126) 在 org.jetbrains.jps.android.AndroidResourceCachingBuilder.build(AndroidResourceCachingBuilder.java:48) 在 org.jetbrains.jps.android.AndroidResourceCachingBuilder.build(AndroidResourceCachingBuilder.java:32) 在 org.jetbrains.jps.incremental.BuildOperations.buildTarget(BuildOperations.java:100) 在 org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:744) 在 org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:770) 在 org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:702) 在 org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:523) 在 org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:314) 在 org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:179) 在 org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:129) 在 org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:220) 在 org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:112) 在 org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler$1.run(BuildMain.java:132) 在 org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.java:41) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 在 java.util.concurrent.FutureTask.run(FutureTask.java:166)

提前致谢!

【问题讨论】:

    标签: java android intellij-idea heap-memory


    【解决方案1】:

    转到设置(Mac 上的首选项) -> 编译器 -> Java 编译器 -> 最大堆大小 (MB),并增加大小,然后重新启动 IntelliJ

    【讨论】:

    • 如果您使用 Android Studio,请在“Android 编译器”部分使用此选项。
    • 设置已移至 Compiler -> IntelliJ 17.2.3 中的 Build proces heap size (MB) - stackoverflow.com/a/8581537/7193940
    【解决方案2】:

    我今天刚遇到这个问题,在 File/Settings/Compiler/Java Compiler 和 .../Compiler/Android Compiler 下将堆大小增加一倍/四倍后,它仍然无法编译。

    最终解决我的问题的值是增加名为 Compiler Process Heap Size 的值(我将它翻了一番,但可能没有必要),可以在 File/Settings/Compiler 下找到它

    这解决了我使用 Intellij 版本 12.1.5(现在最新)的问题

    我也意识到这个帖子有点老了......

    【讨论】:

    • 之所以提到java编译器和android编译器是因为可能需要全部增加,我没有测试过这个事实
    【解决方案3】:

    Intellij 为您提供了编辑应用程序 VM 选项的方法。我认为,编辑配置是您所追求的。此设置位于右上角,或者您可以使用 shift-control-A “编辑配置”,您应该会看到一个对话框,其中一个字段是 VM 选项。您可以在此处设置特定于应用程序的设置,即 -Xmx2048m。

    【讨论】:

      【解决方案4】:

      在我的情况下,错误出现在“Maven”部分的“重新加载项目”之后。它在“构建”窗口的“同步”选项卡中抛出了OutOfMemoryError

      在这种情况下,要增加的正确设置是 VM options for importer,您可以在 Settings -> Build, Execution, Deployment -> Build Tools -> Maven -> Importing 中找到它。就我而言,它设置为 512m,这对于我的项目来说太慢了,大约有 50 个模块左右。

      【讨论】:

        猜你喜欢
        • 2014-06-15
        • 1970-01-01
        • 2016-04-15
        • 1970-01-01
        • 2012-08-03
        • 2013-08-16
        • 2019-03-05
        • 2020-11-30
        • 2016-07-07
        相关资源
        最近更新 更多