即使增加堆大小,IntelliJ Idea仍会出现java.lang.OutOfMemoryError:Java堆空间错误

19
在使用IntelliJ Idea编译我的Android项目时,我多次遇到了java.lang.OutOfMemoryError:Java heap space错误。我通过按照这里的链接增加了Java堆空间,但这并没有解决问题。有趣的是,有时我的应用程序会编译,而其他时候则会因为Java堆空间错误而无法编译。即使我没有对应用程序进行任何更改,它有时也会编译,有时则会失败。我正在编译一个Android项目,这可能是由于我拥有大量资源(drawable hdpi、xhdpi、xxhdpi、large-hdpi、large-xhdpi、large-xxhdpi)吗?但是,就像我之前说的一样,有时它会编译,有时不会。每次我只剩下大约10次尝试编译,幸运的是,其中一次成功了。

以下是错误消息:

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

6个回答

23

前往设置(Mac上为首选项)-> 编译器 -> Java编译器 -> 最大堆大小(MB),并增加该值,然后重新启动IntelliJ。


2
如果您使用Android Studio,则可以在“Android编译器”部分中找到此选项。 - TARAKAN
18
在IntelliJ 17.2.3中,设置已经移动到编译器->构建过程堆大小(MB)。- https://dev59.com/amoy5IYBdhLWcg3wZtJC#8581537 - MagicLegend
1
构建、执行、部署 -> 编译器 -> 2022.3.2 版本中的共享构建进程堆大小(兆字节)。 - mulya

11

今天我遇到了这个问题,在“文件/设置/编译器/Java编译器”和.../编译器/Android编译器下倍增/四倍增堆大小后,它仍无法编译。

最终解决我的问题的值是增加名为“编译器进程堆大小”的值(我将其翻倍,但可能不必要),可以在“文件/设置/编译器”下找到。

这对我使用的Intellij版本12.1.5(目前最新版本)解决了问题。

另外,我意识到这个线程有点老......


1
我提到Java编译器和Android编译器的原因是可能需要将它们都增加,我还没有测试过这个事实。 - Dan M

6

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


2
在我的情况下,当我从"Maven"部分进行"重新加载项目"后,出现错误。在"构建"窗口的"同步"选项卡中,它会抛出OutOfMemoryError
在这种情况下,增加的正确设置是VM导入器选项,您可以在"设置" -> "构建,执行,部署" -> "构建工具" -> "Maven" -> "导入"中找到。在我的情况下,它设置为512m,对于我的大约50个模块项目来说太慢了。

1

我增加了堆大小并重新启动了 IntelliJ 几次,但是它对我没有用...

我只需进入构建菜单,然后点击重新构建项目,一切都和以前一样


1

在这里输入图像描述 这是我的解决方案:

设置 -> 构建、执行、部署 -> 编译器

升级

  • 共享构建进程堆大小
  • 用户本地构建进程堆大小(以M字节为单位)(覆盖共享大小)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接