造成GC开销限制Android的谷歌工作室JAR文件超出误差造成GC开销限制Android的谷歌工作

2019-05-09 07:31发布

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

故障:建立失败,一个例外。

  • 出了什么问题:执行失败的任务“:应用程序:preDexDebug”。 com.android.ide.common.internal.LoggedErrorException:无法运行命令:/应用/ Android的Studio.app/sdk/build-tools/android-4.4W/dx --dex --output /用户/亚历克斯/ AndroidStudioProjects / SilentSMS /应用/编译/中间体/预dexed /调试/ 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文件,并把它添加到我的项目 - 我想建的项目是:

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

我的理解是,因为我的XMS和XMX值太低。 我在其中增加:

/应用/ Android的Studio.app/bin/idea.vmoptions因此现在说:

-Xms256m
-Xmx1024m

不过,我仍然得到错误。 那会是由以下原因造成? 除了silentSMS应用程序是一个Eclipse项目,我代码移植到Android Studio中我没有改变任何东西。 在Android Studio中察觉的错误方面 - 它没有,一切看起来不错。

Answer 1:

我认为有一个单独的方法来提高德兴操作的堆限制。 添加到您android在封闭build.gradle文件:

dexOptions {
    javaMaxHeapSize "4g"
}

看看是否有帮助。

(理念礼貌斯科特·巴塔这个答案 )



Answer 2:

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

采用Android 1.1.0工作室

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

把上面的代码在你的build.gradle文件。



Answer 3:

这个新的问题是由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
}


Answer 4:

我禁止我立即使运行:

菜单偏好构建即时运行“允许热插拔代码即时运行”

我想这是即时运行,使构建慢,并创建导致超过AndroidStudio GC开销限制大尺寸pidXXX.hprof文件。

(我的设备SDK是19)



Answer 5:

我使用Android Studio 3.4 ,只为我工作的事情是从我删除下列行build.gradle文件:

minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

由于Android Studio 3.4使用R8full mode ,而不是直接与兼容Proguard



Answer 6:

我被迫关闭taskmanger所有JAVA.EXE,重新启动的Android Studio和它的工作对我来说



Answer 7:

对我来说,非答案的工作,我看到了在这里工作。 我猜具有CPU的工作非常努力,使电脑热。 我关闭消耗大量CPU(如铬)的计划后,我的笔记本电脑冷却问题就消失了。

供参考:我通过的java.exe过程(这实际上是相关的gradle过程)对96%-97%和内存使用过2,000,000K的CPU。



Answer 8:

添加这的build.gradle文件

dexOptions {
   javaMaxHeapSize "2g"
}


文章来源: Android Studio Google JAR file causing GC overhead limit exceeded error