Android Espresso - java.lang.OutOfMemoryError: превышен лимит накладных расходов GC

Когда я включаю банку моментальных снимков эспрессо в свой проект, мои компиляции gradle зависают, а затем вылетают со следующим сообщением:

UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: GC overhead limit exceeded
    at java.util.Arrays.copyOf(Arrays.java:2219)
    at java.util.ArrayList.toArray(ArrayList.java:358)
    at java.util.ArrayList.<init>(ArrayList.java:164)
    at com.android.dx.ssa.SsaMethod.getUseListCopy(SsaMethod.java:660)
    at com.android.dx.ssa.ConstCollector.updateConstUses(ConstCollector.java:333)
    at com.android.dx.ssa.ConstCollector.run(ConstCollector.java:147)
    at com.android.dx.ssa.ConstCollector.process(ConstCollector.java:75)
    at com.android.dx.ssa.Optimizer.runSsaFormSteps(Optimizer.java:181)
    at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:99)
    at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:72)
    at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:303)
    at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:139)
    at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:94)
    at com.android.dx.command.dexer.Main.processClass(Main.java:682)
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
    at com.android.dx.command.dexer.Main.access$600(Main.java:78)
    at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
    at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
    at com.android.dx.command.dexer.Main.processOne(Main.java:596)
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
    at com.android.dx.command.dexer.Main.run(Main.java:230)
    at com.android.dx.command.dexer.Main.main(Main.java:199)
    at com.android.dx.command.Main.main(Main.java:103)
:Project:dexFlavorEnterpriseDebug FAILED

Судя по моим исследованиям, это проблема зависимости. Как бы вы порекомендовали мне решить эту проблему?

Я попытался увеличить пространство кучи (-Xmx2048), но сборка выполнялась в течение длительного периода времени (несколько минут), в то время как мой компьютер нагревался все больше и больше, но не заканчивался. Без этой банки компиляция никогда не занимает больше минуты.


person loeschg    schedule 03.12.2013    source источник


Ответы (2)


Я думаю, что есть отдельный способ увеличить предел кучи операции dexing. Добавьте это в закрытие Android в файле build.gradle:

dexOptions {
    incremental true
    javaMaxHeapSize "4g"
}
person Hoshouns    schedule 12.12.2014

Похоже, это какая-то проблема с зависимостью библиотеки Maven. Я исправил проблему, удалив некоторые библиотеки... В данном случае Flurry.

Зависимости Maven можно использовать, но они плохо сочетаются с Android + Gradle при возникновении конфликтов. К сожалению, не могу поделиться другой информацией. :(

Изменить:

Вы можете попробовать двойной эспрессо Джейка Уортона для лучшей совместимости с Gradle. https://github.com/JakeWharton/double-espresso

person loeschg    schedule 25.12.2013