Подтвердить что ты не робот

IntelliJ Idea, дающая java.lang.OutOfMemoryError: ошибка кучи Java даже после увеличения размера кучи

Я неоднократно получал ошибку java.lang.OutOfMemoryError: Java heap space при компиляции моего проекта Android в IntelliJ Idea.

Я увеличил пространство кучи java, следуя ссылке здесь, однако это не решило проблему. Самое смешное, что время от времени мое приложение будет компилироваться, а в другое время приложение не будет компилироваться из-за ошибки в области кучи java. Даже когда я не внес изменений в приложение, он будет время от времени компилироваться и сбой иногда.

Любая идея относительно того, как я могу решить эту проблему?

Я компилирую андроидный проект, может ли это быть из-за большого количества или ресурсов (доступных hdpi, xhdpi, xxhdpi, large-hdpi, large-xhpi, 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)

Спасибо заранее!

4b9b3361

Ответ 1

Перейдите в Настройки (Предпочтения на Mac) → Компилятор → Компилятор Java → Максимальный размер кучи (МБ) и увеличьте размер, затем перезапустите IntelliJ

Ответ 2

У меня была эта проблема сегодня, и после удвоения/увеличения числа кучи в файлах File/Settings/Compiler/Java Compiler и... /Compiler/Android Compiler, и он все равно не будет компилироваться.

значение, которое окончательно устранило мою проблему, увеличивало значение, называемое размером кучи процесса компилятора (я удвоил его, но это, вероятно, не обязательно), который можно найти в разделе "Файл/Настройки/Компилятор"

это решило проблему для меня, используя Intellij версии 12.1.5 (последнее прямо сейчас)

Также я понимаю, что этот поток немного устарел...

Ответ 3

Intellij предоставляет вам средства для редактирования параметров виртуальной машины. Редактировать конфигурации, я думаю, это то, что вам нужно. Этот параметр расположен в правом верхнем углу, или, альтернативно, вы можете использовать shift-control-A "Редактировать конфигурации", вы должны увидеть диалоговое окно, а одно из полей - параметры VM. Здесь вы можете установить свои специфичные для приложения настройки, т.е. -Xmx2048m.