web-dev-qa-db-ja.com

GCオーバーヘッド制限超過エラーの原因となるAndroid Studio Google JARファイル

OS XでAndroid Studioを使用しています。このエラーメッセージが表示されます。

FAILURE:ビルドは例外で失敗しました。

  • 問題点:タスク ':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 /中間生成物/ pre-dexed/debug/Android-4.3_r2.1-f22bbff4d1017230e169a4844a9c2195f13060d2.jar /Users/alex/AndroidStudioProjects/SilentSMS/app/libs/Android-4.3_r2.1ar

    エラーコード: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の値が小さすぎるためです。私はそれらを増やしました:

/ Applications/Android Studio.app/bin/idea.vmoptionsが次のように表示されるようにします。

-Xms256m
-Xmx1024m

しかし、それでもエラーが出ます。これは何が原因の可能性がありますか? silentSMSアプリがEclipseプロジェクトであり、コードをAndroid Studioに移植したことを除けば、私は何も変更していません。 Android Studioの発見エラーに関しては、そうではありません。それ以外はすべて問題ないようです。

193
amlwwalker

デクシング操作のヒープ制限を引き上げる別の方法があると思います。これをbuild.gradleファイルのAndroidクロージャに追加します。

dexOptions {
    javaMaxHeapSize "4g"
}

そしてそれが役立つかどうかを確認してください。

(アイデアのおかげで この回答はScott Bartaから

529
CommonsWare

私の場合、heap-sizeを増やすには、このようになります。

Android Studio 1.1.0を使用する

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

上記のコードをBuild.gradleファイルに入れます。

89
Dhruv Raval

この新しい問題は、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
}
30
gurusiv

インスタントランを無効にします。

メニュー設定ビルドインスタントラン「ホットスワップコードへのインスタントランを有効にする」

私はそれがビルドを遅くし、AndroidStudioのgcオーバーヘッド制限を超える原因となる大きなサイズのpidXXX.hprofファイルを作成するインスタントランであると思います。

(私のデバイスSDKは19です。)

3
崔乐天

これをbuild.gradleファイルに追加してください。

dexOptions {
   javaMaxHeapSize "2g"
}
0
Ghulam Rasool

私にとって答えがうまくいかなかった私はここでうまくいったのを見た。私はCPUが非常に激しく働くことでコンピュータが熱くなると思いました。大量のCPUを消費するプログラム(クロムなど)を閉じてラップトップを冷却した後、問題は解決しました。

参考のために:私は96%-97%のCPUと、Java.exeプロセスによる2,000,000Kを超えるメモリ使用量を持っていました(実際にはgradle関連プロセスでした)。

0
olNoy

TaskmangerからすべてのJava.exeを強制的に閉じ、Android St​​udioを再起動しました。

enter image description here

0
Hitesh Sahu

私はAndroid Studio 3.4私のために働いた唯一のことを使用していますが、build.gradleファイルから次の行を削除することでした:

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

Android Studio 3.4R8full modeを使用しており、Proguardと直接互換性がないため

0
pableiros