2013-07-30 21 views
13

在IntelliJ Idea上編譯我的Android項目時,我反覆得到了java.lang.OutOfMemoryError: Java heap space錯誤。IntelliJ給出java.lang.OutOfMemoryError的想法:即使增加堆大小後Java堆空間錯誤

我通過鏈接here增加了我的java堆空間,但是這並沒有解決問題。有趣的是,有時我的應用程序會編譯,有時由於java堆空間錯誤,應用程序無法編譯。即使我沒有對應用程序進行任何更改,它也會隨時編譯並且有時會失敗。

有關我如何解決此問題的任何想法?

我正在編譯一個android項目,可能是由於我擁有大量資源(可繪製hdpi,xhdpi,xxhdpi,large-hdpi,large-xhdpi,large-xxhdpi)?但是,再次,就像我說過的那樣,它有時會編譯,有時它不會。我每次都要做大約10次嘗試編譯,幸運的是它會成功一次。

以下是錯誤:

Internal error: (java.lang.OutOfMemoryError) Java heap space 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(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166)

提前感謝!

回答

16

進入設置(在Mac首選項) - >編譯器 - > Java編譯器 - >最大堆大小(MB),並增加大小,然後重新啓動的IntelliJ

+2

如果您在「Android編譯器」部分中使用Android Studio這個選項。 – TARAKAN

+0

在IntelliJ 17.2.3中將設置移動到'Compiler' - >'Build proces heap size(MB)' - https://stackoverflow.com/a/8581537/7193940 – MagicLegend

10

我只是有這個問題的今天,加倍後/四倍的文件/設置/編譯器/ Java編譯器和... /編譯器/ Android編譯器下的堆大小,它仍然不會編譯。

終於修好了我的問題是增加值稱爲編譯程序堆大小(我增加了一倍,但大概是沒有必要的)的值,它可以在文件/設置/編譯器中找到

這解決了我使用的是IntelliJ版本12.1.5(最新現在)

的問題,我也意識到這線程是有點老了...

+0

我提到java編譯器和android編譯器的原因是可能有必要增加所有這些,我沒有測試過這個事實 –

2

的IntelliJ爲您提供的手段來編輯應用VM選項。編輯配置,我認爲,就是你所追求的。此設置位於右上角,或者您可以使用shift-control-A「編輯配置」,您應該看到一個對話框,其中一個字段是VM選項。您可以在此設置應用程序特定設置,即-Xmx2048m。