18

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

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

关于如何解决这个问题的任何想法?

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

这是错误:

内部错误:(java.lang.OutOfMemoryError)Java 堆空间 java.lang.OutOfMemoryError: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) at org.jetbrains.jps.incremental.storage.OneToManyPathsMapping$PathCollectionExternalizer.save(OneToManyPathsMapping.java:87) at 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.incremental.BuildOperations.buildTarget(BuildOperations.java:100) 在 org.jetbrains.jps.incremental.IncProjectBuilder 的 org.jetbrains.jps.android.AndroidResourceCachingBuilder.build(AndroidResourceCachingBuilder.java:32) .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) at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:314) at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder. java:179) 在 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(Executors.java:471) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 在 java.util.concurrent.FutureTask.run(FutureTask.java:166)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)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)

提前致谢!

4

4 回答 4

21

转到 Settings (Preferences on Mac) -> Compiler -> Java Compiler -> Maximum heap size (MB),并增加大小,然后重新启动 IntelliJ

于 2013-07-30T18:01:55.437 回答
10

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

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

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

我也意识到这个线程有点旧......

于 2013-10-02T18:53:44.423 回答
5

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

于 2015-05-04T19:31:19.283 回答
0

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

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

于 2021-12-15T18:42:35.177 回答