Dex yürütülemiyor: Eclipse'de GC genel masraf sınırı aşıldı


213

Git projesi OsmAnd'ı indirip derlemeye gittiğimde, Eclipse şu hataları döndürdü:

[Dex Loader] Unable to execute dex: GC overhead limit exceeded
[OsmAnd]     Conversion to Dalvik format failed: 
             Unable to execute dex: GC overhead limit exceeded

Google ve Stackoverflow ben değiştirmeleri gerektiğini söyledi -Xms40m -Xmx384miçinde eclipse.ini. Dalvik formatına dönüştürme başarısız oldu: Dex çalıştırılamıyor: Java yığın alanı .
Projeyi temizledim ve Eclipse'i yeniden başlattım, ancak yardımcı olmadı.

Bu bağlantıyı buldum: Android geliştiricisi için ipuçları: “Dalvik formatına dönüşüm başarısız oldu: dex yürütülemiyor: null” Ama girdimi değiştirmek için projemden hangisini bilmiyorum .jar. Birisi yardımcı olabilirse, projeyi gönderebilirim onlar.

Yanıtlar:


437

Eclipse.ini dosyasındaki VM değerleri değiştirilerek düzeltilebilir. Değerleri aşağıdaki gibi 512 ve 1024 olarak ayarlayın:

openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms512m
-Xmx1024m

Resimdeki değişen alan resim açıklamasını buraya girin


8
Teşekkürler. Neden varsayılanların hala bu kadar kesinlikle yetersiz olduğunu merak ediyorum, 512/1024'ten daha azıyla kimsenin tutulma çalıştırdığını sanmıyorum - bunun iki katına bile gittim. Ayrıca, ayarların her yükseltmede üzerine yazılan bir ini dosyası yerine ana dizindeki bazı yapılandırma dosyasında saklanmasını isterdim.
Yashima

11
--launcher.XXMaxPermSize 512mİki kez mi ihtiyacınız var ?
Andrew Wyld

4
Bu sayılardaki sınırlar nelerdir? Onları ne kadar yüksek koymalıyım?
easycheese

5
@MuhammadRiyaz İşletim sisteminize ve 32 bit veya 64 bit JVM kullanıp kullanmadığınıza bağlıdır. 64 bit JVM kullanıyorsanız, OS / diğer uygulamalar için RAM boyutunuz eksi yükünüzden daha küçük bir şeye güvenle ayarlayabilirsiniz. 32 bitlik bir VM'de, VM'nin bitişik adres alanı ayırması gerektiğinden 1500M'den (Linux'ta) veya 1100M'den (Windows'ta) daha küçük tutmak istersiniz ve bu 32 bit uygulamalar için çok sınırlı bir kaynaktır.
Jules

4
-XX: MaxPermSize = 1024m -Xms1024m -Xmx2048m yardımcı oldu
kreker

24

Benim için aşağıdaki adımlar işe yaradı

1) Open eclipse.ini file
2)changed
-Xms40m
-Xmx512m
to 
-Xms512m
-Xmx1024m

3)Restart eclipse

Buraya bakın


11
OSX'de eclipse.ini dosyası Eclipse.app/Contents/MacOS/'da
Ahmad Baraka

7

eclipse.ini şöyle görünür.

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20140116-2212
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m
-Xmx1024m

5

Android XML'den kaynaklanan bu sorunu varsayalım, çünkü çok sık açıyorsunuz

StackOverFlow ile ilgili şu iki sorun birbiriyle ilgilidir:

Eclipse'de bir Android XML dosyasına her tıkladığımda, tüm API sürümleri için veri yükler

ve

Dex çalıştırılamıyor: GC genel yük sınırı aşıldı

Bu sorunu çözmek için VM değerlerini artırmak veya eski bir ADT sürümüne (22.6.2 veya 23.2) düşürmekten başka bir çözüm daha buldum

Not:

Her açtığınızda XML yüklemeyecek olan eski ADT sürümlerinden bazıları, bu GC ek yük sınırının ilk iş parçacığında tartışıldığı gibi aşılmasına neden olacak bellek taşması olmaz

Çözüm:

Tutulmanın alt kısmında Çöp Toplayıcısını Çalıştır yazan bir çöp tenekesi sembolü olacaktır . Android'in bir XML dosyasını kapattığınızda, hafızayı serbest bırakmak için Çöp Kutusuna veya Çöp Toplayıcısını Çalıştır'a tıklamayı unutmayın . Bu şekilde, çalışma alanını bu tür bir hatanın çökmesine karşı koruyabilirsiniz: D

Bu nihai bir çözüm olabilir, çünkü android XML'nizi çok sık açarsanız, özellikle benim gibi çok sayıda UI çalışması yaparsanız, VM değerini RAM sınırınızın ötesine çıkaramazsınız: P

Umarım bu konuya gelecek herkese yardımcı olur :)

Sakin Ol ve Kodu Aç


1

Bu hata ile 12 saat sonra ve eclipse.ini dosyasını değiştirerek başarı elde ettikten sonra nihayet doğru çözümü buldum. Ortam değişkenlerimde, "-Xmx512M" değerini içeren "_JAVA_OPTIONS" adlı bir değişken vardı. Bu değeri eclipse.ini (-Xmx4096M) ile aynı değere çevirerek bir kez daha projemi bir APK dosyasına verebildim.


aslında bu gerçekten önemli bir ipucu olabilir, _JAVA_OPTIONS'ı sistem değişkenlerinizden silebilirsiniz (hızlı ortam düzenleyicisi kullanın) aksi halde koruma bazı nedenlerle şikayet etmeye başlayabilir. Viktor'a çok teşekkürler
Simon

1

Bu geçici çözümün nedenini bilmiyorum, ama yukarıdakilerin hepsi yapmadığı zaman benim için çalışıyor.

Tutulmayı bir kısa yoldan veya bir bağlantıdan başlatmayın. Her zaman eclipse.exeeclipse klasörünüzden açın .eclipse.ini

Not - Ben sadece linux için denedim.


1

Bu rahatsız edici mesajı önlemek için, yapılandırmamı aşağıdaki gibi değiştirmek zorunda kaldım:

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20120913-

144807
-product
com.android.ide.eclipse.adt.package.adtproduct
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
1024m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.6
-XX:MaxPermSize=256m
-Xms512m
-Xmx1024m

doğru olarak işaretlenen cevaba göre, değişen

-XX:MaxPermSize=256m
-Xms512m
-Xmx1024m

ve:

--launcher.XXMaxPermSize
1024m

1
1) Open eclipse.ini file
2)change
-Xms40m
-Xmx512m
to 
-Xms512m
-Xmx1024m
3)Restart eclipse

Aynı eclipse.ini dosyası, eclipse'in kendisinin bu kök yolunda Eclipse'de bulunur:

C:\Users\username\Downloads\adt-bundle-windows-x86_64-20140702\eclipse\eclipse.ini

Aynı dosya android stüdyo projesinde yer alacak: -

C:\Users\username\AppData\Local\Android\sdk\tools\lib\monitor-x86_64\monitor(Type:Configuration settings)

0

Bu cevaplar işe yaramazsa (Benim için işe yaramadı) o zaman şunu deneyin:

1) Çalışma alanınızdaki .metadata klasörünüzün bir kopyasını oluşturun.

2) KOPYA YAPMADAN SONRA .metadata dizininizi silin

3) Eclipse'i açın ve Eclipse'i kapatın.

4) Eklentiler klasörünüzü eski .metadata'nızdan yeni .metadata'nıza kopyalayın

5) Tüm projeleri çalışma alanınıza geri aktarın

6) Sakin ol ve kodunu açık tut!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.