Android Espresso-java.lang.OutOfMemoryError:超出GC开销限制

Android Espresso-java.lang.OutOfMemoryError:超出GC开销限制,android,memory,jar,garbage-collection,android-espresso,Android,Memory,Jar,Garbage Collection,Android Espresso,当我在项目中包含espresso snapshot jar时,我的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)

当我在项目中包含espresso snapshot jar时,我的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
意外的顶级错误:
java.lang.OutOfMemoryError:超出GC开销限制
位于java.util.Arrays.copyOf(Arrays.java:2219)
在java.util.ArrayList.toArray(ArrayList.java:358)
位于java.util.ArrayList。(ArrayList.java:164)
位于com.android.dx.ssa.SsaMethod.getUseListCopy(SsaMethod.java:660)
位于com.android.dx.ssa.ConstCollector.updateConstUses(ConstCollector.java:333)
位于com.android.dx.ssa.ConstCollector.run(ConstCollector.java:147)
位于com.android.dx.ssa.ConstCollector.process(ConstCollector.java:75)
位于com.android.dx.ssa.Optimizer.runSsaFormSteps(Optimizer.java:181)
位于com.android.dx.ssa.Optimizer.optimize(Optimizer.java:99)
位于com.android.dx.ssa.Optimizer.optimize(Optimizer.java:72)
在com.android.dx.dex.cf.CfTranslator.processMethods上(CfTranslator.java:303)
位于com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:139)
位于com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:94)
位于com.android.dx.command.dexer.Main.processClass(Main.java:682)
位于com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
com.android.dx.command.dexer.Main.access$600(Main.java:78)
位于com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
位于com.android.dx.cf.direct.ClassPathPener.processArchive(classPathPener.java:284)
位于com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
位于com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
位于com.android.dx.command.dexer.Main.processOne(Main.java:596)
位于com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
位于com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
位于com.android.dx.command.dexer.Main.run(Main.java:230)
位于com.android.dx.command.dexer.Main.Main(Main.java:199)
位于com.android.dx.command.Main.Main(Main.java:103)
:项目:dexFlavorEnterpriseDebug失败
根据我的研究,这听起来像是一个依赖性问题。您建议我如何着手解决此问题


我试着碰撞堆空间(-Xmx2048),但构建运行了很长一段时间(几分钟),而我的计算机越来越热,但没有完成。没有这个jar,编译不会超过一分钟

这似乎是某种Maven库依赖性问题。我通过删除某些库修复了此问题。。。在这种情况下,Flurry

Maven依赖项是可用的,但当存在冲突时,不能很好地与Android+Gradle合并。不幸的是,我们没有很多其他信息可供共享:(

编辑:


您可能想看看Jake Wharton的double espresso,以获得更好的Gradle兼容性。

我认为有一种单独的方法可以提高dexing操作的堆限制。将此添加到build.Gradle文件中的android闭包中:

dexOptions {
    incremental true
    javaMaxHeapSize "4g"
}