File Studio JAR Android Studio Google menyebabkan batas overhead GC melebihi kesalahan

210

Saya menggunakan Android Studio di OS X. Saya menerima pesan kesalahan ini:

KEGAGALAN: Build gagal dengan pengecualian.

  • Apa yang salah: Eksekusi gagal untuk tugas ': app: preDexDebug'. com.android.ide.common.internal.LoggedErrorException: Gagal menjalankan perintah: / Aplikasi / 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 / Pengguna / alex/AndroidStudioProjects/SilentSMS/app/libs/android-4.3r.

    Kode Kesalahan: 3 Output:

  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)

Saya menggunakan perpustakaan ini:

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

Saya menarik file JAR dan menambahkannya ke proyek saya - proyek yang saya coba bangun adalah:

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

Saya mengerti itu karena nilai xms dan xmx saya terlalu rendah. Saya meningkatkannya di:

/ Aplikasi / Android Studio.app/bin/idea.vmoptions sehingga sekarang mengatakan:

-Xms256m
-Xmx1024m

Namun, saya masih mendapatkan kesalahan. Apa yang bisa disebabkan oleh ini? Terlepas dari aplikasi silentSMS yang menjadi proyek Eclipse dan saya memindahkan kode ke Android Studio, saya belum mengubah apa pun. Dalam hal Android spotting error - tidak, dan yang lainnya terlihat baik-baik saja.

amlwwalker
sumber

Jawaban:

547

Saya pikir ada cara terpisah untuk meningkatkan batas tumpukan operasi dexing. Tambahkan ini ke androidpenutupan Anda di build.gradlefile Anda :

dexOptions {
    javaMaxHeapSize "4g"
}

dan lihat apakah itu membantu.

(Gagasan dari jawaban ini dari Scott Barta )

CommonsWare
sumber
45
4gsedikit berlebihan, 2gtidak apa
Hugo Gresse
3
Fantastis! Ini juga memperbaiki kesalahan saya. Saya menemukan bahwa semakin banyak memori yang saya berikan, semakin cepat membangunnya. Saya beralih dari 1 menit menjadi 19 detik.
Simon
2
Saya masih mendapatkan kesalahan: java.lang.OutOfMemoryError: Batas overhead GC melebihi [org.gradle.api.internal.project.ant.AntLoggingAdapter] di java.util.BitSet.clone
IgorGanapolsky
7
Saya telah menambahkan ini, tetapi saya masih melihatOutOfMemoryError
Chad Bingham
8
tidak bekerja untuk saya, perlu naik di gradle.properties:org.gradle.jvmargs=-XX:MaxPermSize=1024m -Xms1024m -Xmx4096m -XX:ReservedCodeCacheSize=1024m
hmac
93

Dalam kasus saya, untuk meningkatkan ukuran tumpukan terlihat seperti ini:

Menggunakan Android Studio 1.1.0

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

Masukkan kode di atas dalam file Build.gradle Anda .

Dhruv Raval
sumber
4
ini berhasil diatasi GC overhead limit exceededsetelah saya mengaktifkan Multidexing. Pengecualian terjadi padaat com.android.dx.command.dexer.Main.runMultiDex(Main.java:334)
Seseorang di suatu tempat
ini tidak akan cukup sebagai komentar, tetapi kesalahan Android Studio menunjukkan `KESALAHAN TOP-LEVEL TAK TERKENAL: java.lang.OutOfMemoryError: Batas overhead GC terlampaui` Lokasi pengecualian ada di at com.android.dx.util.FixedSizeList.<init>(FixedSizeList.java:38)dan atas tumpukan adalahcom.android.dx.command.dexer.Main.runMultiDex(Main.java:334) at com.android.dx.command.dexer.Main.run(Main.java:244) at com.android.dx.command.dexer.Main.main(Main.java:215) at com.android.dx.command.Main.main(Main.java:106)
Seseorang di suatu tempat
1
Tapi begitu saya menambahkan Anda menyarankan javaMaxHeapSize dan parameter tambahan, Android Studio mampu membangun aplikasi multi-dexed.
Seseorang di suatu tempat
jika 2gb tidak cukup untuk beberapa hal, maka saya akan mencoba 4gb yang disarankan oleh commonware
Seseorang di suatu tempat
1
Terima kasih. Perhatikan apa yang dikatakan dokumen tentang incremental: Ini memiliki banyak keterbatasan dan mungkin tidak berfungsi. Gunakan dengan hati-hati.
Ferran Maylinch
41

Masalah baru ini disebabkan oleh versi Android terbaru.

Buka folder root proyek Anda, buka gradle.properties, dan tambahkan opsi berikut:

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

Kemudian tambahkan perubahan ini di build.gradlefile Anda :

dexOptions {
        incremental = true
        preDexLibraries = false
        javaMaxHeapSize "4g" // 2g should be also OK
}
gurusiv
sumber
1
Peringatan: android.dexOptions.incrementalProperti sudah usang dan tidak berpengaruh pada proses pembuatan.
tir38
ini memecahkan masalah saya. tetapi saya; ts membuat file bernama java_pid1512.hprof yang sangat besar. saya menduga opsi Dfile Anda membuatnya? apakah itu perlu dan dapatkah Anda menunjukkan cara menghapus dump ke file
j2emanue
1
@ j2emanue: File ini dibuat karena opsi "HeapDumpOnOutOfMemoryError": docs.oracle.com/cd/E15289_01/doc.40/e15062/…
Mehlyfication
1
Mungkin perlu diperbarui: incrementaldihapus pada akhir 2018
cuasodayleo
di AS 3.4 mengaktifkan "org.gradle.jvmargs = -Xmx2048m -XX: MaxPermSize = 512m -XX: + HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8" di file gradle.properties menyelesaikan masalah untuk saya
JimmyFlash
4

Saya menonaktifkan Instant Run oleh:

Preferensi Menu → BuildRun Instan "Aktifkan Run Instan ke kode swap panas"

Saya kira itu adalah Instant Run yang membuat build lambat dan membuat file pidXXX.hprof ukuran besar yang menyebabkan batas overhead AndroidStudio gc terlampaui.

(SDK perangkat saya 19.)

崔 乐天
sumber
Bagaimana Anda mengetahui itu adalah Instant Run yang membuat file hprof sebesar itu? Saya perhatikan ada yang baru-baru ini dibuat di server GitLab kami, tetapi kami tidak mengaktifkan instant run.
AdamMc331
4

Android Studio 3.5.3

Temukan Pengaturan Memori (Cmd + Shift + A di Mac atau klik Bantuan dan mulai mengetik "Pengaturan Memori") di bawah Preferensi / Pengaturan dan tambahkan Ukuran Heap IDE dan / atau Ukuran Heap Daemon untuk kepuasan Anda masukkan deskripsi gambar di sini

ericn
sumber
1
Terima kasih telah menyelamatkan hariku.
Virendra Pal Singh
1

Tambahkan ini ke file build.gradle

dexOptions {
   javaMaxHeapSize "2g"
}
Ghulam Rasool
sumber
0

Saya dipaksa menutup semua Java.exe dari taskmanger, me-restart Android Studio dan itu berhasil untuk saya

masukkan deskripsi gambar di sini

Hitesh Sahu
sumber
0

Bagi saya tidak ada jawaban yang berhasil saya lihat di sini bekerja. Saya menduga memiliki CPU yang bekerja sangat keras membuat komputer menjadi panas. Setelah saya menutup program yang mengkonsumsi CPU dalam jumlah besar (seperti chrome) dan mendinginkan laptop saya masalah menghilang.

Untuk referensi: Saya menggunakan CPU pada 96% -97% dan penggunaan memori lebih dari 2.000.000 ribu melalui proses java.exe (yang sebenarnya merupakan proses terkait tingkat).

OlNoy
sumber
Bagaimana solusi Anda berhubungan dengan masalah SPESIFIK yang diajukan di sini?
kalabalik
Saya mendapatkan kesalahan yang sama seperti disebutkan di atas: java.lang.OutOfMemoryError: Batas overhead GC terlampaui Solusi yang saya tawarkan menyelesaikan kesalahan ini untuk saya
olNoy
0

Saya menggunakan Android Studio 3.4dan satu-satunya hal yang bekerja untuk saya adalah menghapus baris berikut dari build.gradlefile saya :

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

Karena Android Studio 3.4ini menggunakan R8di full modedan tidak langsung kompatibel denganProguard

pableiros
sumber
2
Saya pikir ini bukan solusi ketika Anda harus merilis build yang membingungkan. Saya telah menggunakan gradle-5.2.1 dengan Android Studio 3.4 dan bekerja dengan baik bahkan dengan minifyEnabled truekonfigurasi pro-guard sementara gradle-5.1.1 mengalami masalah yang sama.
Vikas Patidar
Ini adalah kebalikan dari apa yang kita inginkan. -1
Zun
Seperti yang saya katakan, ini bekerja untuk saya dan kesalahan hilang dan akhirnya saya bisa menghasilkan apk. Tidak ada jawaban lain yang berfungsi dalam proyek saya.
pableiros
perbarui gradle ke 5.2.1 jalankan cammand di / project / android ./gradlew wrapper --gradle-version=5.2.1
Ashok Devatwal
0

dalam kasus saya, saya Edit gradle.properties:

Catatan: jika Anda mengaktifkan minifyEnabled true:

hapus baris ini:

android.enableR8=true

dan tambahkan baris ini di ur build.gradle, androidblokir:

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

semoga ini membantu seseorang :)

sana ebadi
sumber
0

4g agak berlebihan, jika Anda tidak ingin mengubah buildGradle Anda dapat menggunakan FILE -> Cache / restart yang tidak valid.

Itu bekerja dengan baik untukku ...

Pabel
sumber
0

Pada titik tertentu salinan duplikat apply plugin: 'com.android.application'ditambahkan ke build gradle saya. Menghapus salinan duplikat dan memastikan semua plugin saya yang berlaku berada di atas memperbaiki masalah bagi saya.

mburst
sumber