Android Studio Google JAR文件导致GC开销限制超出错误

我在OS X上使用Android Studio。我收到此错误消息:

失败:生成失败,出现exception。

  • 出了什么问题:执行任务':app:preDexDebug'失败。 com.android.ide.common.internal.LoggedErrorException:无法运行命令:/ Applications / Android Studio.app/sdk/build-tools/android-4.4W/dx –dex –output / Users / alex / AndroidStudioProjects / SilentSMS / app / build / intermediates / pre-dexed / debug / android-4.3_r2.1-f22bbff4d1017230e169a4844a9c2195f13060d2.jar /Users/alex/AndroidStudioProjects/SilentSMS/app/libs/android-4.3_r2.1.jar

    错误代码:3输出:

UNEXPECTED TOP-LEVEL ERROR: java.lang.OutOfMemoryError: GC overhead limit exceeded at com.android.dx.cf.code.RopperMachine.getSources(RopperMachine.java:665) at com.android.dx.cf.code.RopperMachine.run(RopperMachine.java:288) at com.android.dx.cf.code.Simulator$SimVisitor.visitLocal(Simulator.java:612) at com.android.dx.cf.code.BytecodeArray.parseInstruction(BytecodeArray.java:412) at com.android.dx.cf.code.Simulator.simulate(Simulator.java:94) at com.android.dx.cf.code.Ropper.processBlock(Ropper.java:782) at com.android.dx.cf.code.Ropper.doit(Ropper.java:737) at com.android.dx.cf.code.Ropper.convert(Ropper.java:346) at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:282) 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) 

我正在使用这个库:

http://grepcode.com/snapshot/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/

我拉了JAR文件,并将其添加到我的项目 – 我想要build立的项目是:

https://github.com/domi007/silentSMS/

我知道这是因为我的xms和xmx值太低。 我增加了他们在:

/应用程序/ Android Studio.app/bin/idea.vmoptions,以便它现在说:

 -Xms256m -Xmx1024m 

不过,我仍然得到错误。 这可能是由什么引起的? 除了silentSMS应用程序是Eclipse项目,我将代码移植到Android Studio之后,我还没有改变任何东西。 在Android Studio发现错误 – 它不,并且其他一切看起来不错。

我认为有一个独立的方式来提高德兴运营的堆栈限制。 把这个添加到你的build.gradle文件中的android闭包中:

 dexOptions { javaMaxHeapSize "4g" } 

看看是否有帮助

(想法来自Scott Barta的这个答案 )

在我的情况下,增加堆大小看起来像这样:

使用Android Studio 1.1.0

 android { dexOptions { incremental true javaMaxHeapSize "2048M" } } 

把上面的代码放到你的Build.gradle文件中。

这个新问题是由最新版本的Android造成的。

转到您的项目根文件夹,打开gradle.properties ,并添加以下选项:

 org.gradle.daemon=true org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 org.gradle.parallel=true org.gradle.configureondemand=true 

然后将这些更改添加到您的build.gradle文件中:

 dexOptions { incremental = true preDexLibraries = false javaMaxHeapSize "4g" // 2g should be also OK } 

我禁用我的即时运行:

菜单首选项生成即时运行“启用即时运行到热插拔代码”

我想这是即时运行,使生成速度慢,并创build一个大尺寸pidXXX.hprof文件,导致超过AndroidStudio gc开销限制。

(我的设备SDK是19.)

我强制closures从taskmanger的所有Java.exe,重新启动Android Studio,它为我工作

在这里输入图像描述

对于我来说,在这里看到的答案没有工作。 我猜想,让CPU工作非常困难,让电脑变得很热。 closures了消耗大量CPU(如铬)的程序并冷却笔记本电脑后,问题消失了。

作为参考:我有一个java.exe进程(这实际上是gradle相关的过程)的96%-97%的CPU和内存使用超过2,000,000K。