Android Espresso - java.lang.OutOfMemoryError:超出GC开销限制 [英] Android Espresso - java.lang.OutOfMemoryError: GC overhead limit exceeded

查看:166
本文介绍了Android Espresso - java.lang.OutOfMemoryError:超出GC开销限制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的项目中包含espresso快照jar时,我的gradle编译会挂起,然后用以下消息将其踢出:

  UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError:GC开销限制在java.util.Arrays.copyOf处超过
(Arrays.java:2219)$ b $在java.util.ArrayList .toArray(ArrayList.java:358)
在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.CfTransl ator.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。在com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
(com.android.dx.command)处使用direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
。 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),但是在我的计算机变得越来越热的时候,构建运行了很长一段时间(几分钟)没有完成。如果没有这个jar,编译不需要一分多钟。

解决方案

这似乎是某种Maven库依赖性问题。我通过删除某些库来解决这个问题......在这种情况下乱了一下。



Maven依赖关系可用,但在出现冲突时不能很好地与Android + Gradle兼容。很遗憾,没有很多其他信息可供分享。 :(b / b)
$ b

编辑:



你可能想看看杰克沃顿的双-espresso以获得更好的Gradle兼容性。 https://github.com/JakeWharton/double-espresso


When I include the espresso snapshot jar in my project, my gradle compilations hang and then kick out with the following message:

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

From my research it sounds like this is a dependency issue. How would you recommend I go about resolving this?

I tried bumping the heap space (-Xmx2048), but the build ran for a long period of time (several minutes) all the while my computer got hotter and hotter but didn't finish. It never takes more than a minute to compile without this jar.

解决方案

This seemed to be some sort of Maven library dependency issue. I fixed the issue by removing certain libraries... Flurry in this instance.

Maven dependencies are usable but don't merge well with Android + Gradle when there are conflicts. Unfortunately don't have a lot of other information to share. :(

Edit:

You may want to check out Jake Wharton's double-espresso for better Gradle compatibility. https://github.com/JakeWharton/double-espresso

这篇关于Android Espresso - java.lang.OutOfMemoryError:超出GC开销限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆