IntelliJ Idea给出了java.lang.OutOfMemoryError:即使增加堆大小,Java堆空间也会出错

时间:2013-07-30 17:35:40

标签: java android intellij-idea heap-memory

在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堆空间at   java.util.Arrays.copyOf(Arrays.java:2271)at   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)at   com.intellij.util.io.IOUtil.writeString(IOUtil.java:63)at   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)     at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:334)     在java.util.concurrent.FutureTask.run(FutureTask.java:166)

提前致谢!

3 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:10)

我今天遇到了这个问题,并且在文件/设置/编译器/ Java编译器和... /编译器/ Android编译器下的堆大小翻了两倍之后,它仍然无法编译。

最终修复我的问题的值是增加了名为Compiler Process Heap Size的值(我将其加倍,但可能不是必需的),可以在File / Settings / Compiler

下找到

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

的问题

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

答案 2 :(得分:4)

Intellij provides you with means to edit Application VM Options. Edit Configurations, I think, is what you are after. This setting is located in the top-right corner, or alternatively you can use shift-control-A "Edit configurations" you should see a dialog and one of the fields is VM Options. Here you can set your application-specific settings, i.e. -Xmx2048m.