Dex kann nicht ausgeführt werden: GC-Overhead-Limit in Eclipse überschritten

213

Als ich das Git-Projekt OsmAnd heruntergeladen und kompiliert habe, hat Eclipse die folgenden Fehler zurückgegeben:

[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 und Stackoverflow sagte , dass ich ändern muss -Xms40m -Xmx384min eclipse.ini. Konvertierung in das Dalvik-Format fehlgeschlagen: Dex: Java-Heapspeicher kann nicht ausgeführt werden .
Ich habe das Projekt bereinigt und Eclipse neu gestartet, aber es hat nicht geholfen.

Ich habe diesen Link gefunden: Tipps für Android-Entwickler: „Konvertierung in das Dalvik-Format fehlgeschlagen: Dex: null kann nicht ausgeführt werden.“ Ich weiß jedoch nicht, in welchem .jarProjekt ich die Eingabe ändern soll. Wenn jemand helfen kann, kann ich das Projekt an senden Sie.

DavyJonesUA
quelle

Antworten:

437

Dies kann durch Ändern der VM-Werte in Eclipse.ini behoben werden. Stellen Sie die Werte wie folgt auf 512 und 1024 ein:

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

Der geänderte Bereich im Bild Geben Sie hier die Bildbeschreibung ein

user1457659
quelle
8
Vielen Dank. Ich frage mich, warum die Standardeinstellungen immer noch so absolut unzureichend sind. Ich glaube nicht, dass irgendjemand Eclipse mit weniger als 512/1024 ausführt - ich habe nur das Doppelte erreicht. Außerdem wünschte ich mir, die Einstellungen würden in einer Konfigurationsdatei in meinem Home-Verzeichnis gespeichert, anstatt in einer INI-Datei, die bei jedem Upgrade überschrieben wird.
Yashima
11
Benötigen Sie --launcher.XXMaxPermSize 512mzweimal?
Andrew Wyld
4
Was sind die Grenzen dieser Zahlen? Wie hoch sollte ich sie setzen?
easycheese
5
@MuhammadRiyaz Es hängt von Ihrem Betriebssystem ab und davon, ob Sie eine 32-Bit- oder 64-Bit-JVM verwenden. Wenn Sie eine 64-Bit-JVM verwenden, können Sie diese sicher auf einen Wert einstellen, der kleiner als Ihre RAM-Größe minus Overhead für Betriebssysteme / andere Anwendungen ist. Auf einer 32-Bit-VM sollten Sie sie kleiner als etwa 1500 MB (unter Linux) oder 1100 MB (unter Windows) halten, da die VM zusammenhängenden Adressraum zuweisen muss. Dies ist eine sehr begrenzte Ressource für 32-Bit-Apps.
Jules
4
-XX: MaxPermSize = 1024m -Xms1024m -Xmx2048m geholfen
Kreker
24

Bei mir haben folgende Schritte funktioniert

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

3)Restart eclipse

Siehe hier

Sunil Kumar Sahoo
quelle
11
Unter OSX befindet sich die Datei eclipse.ini unter Eclipse.app/Contents/MacOS/
Ahmad Baraka am
7

eclipse.ini sieht so aus.

-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
Roadies
quelle
5

Lassen Sie mich dieses Problem annehmen, das durch Android XML verursacht wird, weil Sie es sehr häufig öffnen

Die folgenden zwei Probleme bei StackOverFlow werden miteinander behoben:

Jedes Mal, wenn ich in Eclipse auf eine Android-XML-Datei klicke, werden Daten für alle API-Versionen geladen

und

Dex kann nicht ausgeführt werden: GC-Overhead-Limit überschritten

Ich habe eine weitere Lösung gefunden , um dieses Problem zu beheben, außer die VM-Werte zu erhöhen oder auf eine ältere ADT-Version (22.6.2 oder 23.2) herunterzustufen.

Hinweis:

Einige der älteren ADT-Versionen laden das XML nicht jedes Mal, wenn Sie es öffnen, sodass kein Speicherüberlauf auftritt, der dazu führt, dass dieses GC-Overhead-Limit überschritten wird, wie im ersten Thread erläutert

Lösung:

Am unteren Rand der Sonnenfinsternis befindet sich das Papierkorbsymbol " Garbage Collector ausführen" . Wenn Sie eine XML-Datei von Android schließen, vergessen Sie nicht, einfach auf den Papierkorb zu klicken oder Garbage Collector auszuführen , um Speicher freizugeben. Auf diese Weise können Sie den Arbeitsbereich vor Abstürzen dieser Art von Fehlern schützen: D.

Dies könnte eine ultimative Lösung sein, da Sie den VM-Wert nicht über Ihr RAM-Limit hinaus erhöhen können, wenn Sie Ihr Android-XML sehr häufig öffnen, insbesondere wenn Sie viele UI-Arbeiten wie ich ausführen: P.

Ich hoffe das würde jedem helfen, der zu diesem Thread kommt :)

Bleib ruhig und Code an

Akbar Sha Ebrahim
quelle
1

Nach 12 Stunden mit diesem Fehler und ohne Erfolg beim Ändern der Datei eclipse.ini habe ich endlich die richtige Lösung gefunden. In meinen Umgebungsvariablen gab es eine Variable namens "_JAVA_OPTIONS", die den Wert "-Xmx512M" enthielt. Ändern dieses Werts auf den gleichen Wert wie in eclipse.ini (-Xmx4096M) Ich konnte mein Projekt erneut in eine APK-Datei exportieren.

Viktor
quelle
Tatsächlich kann dies ein wirklich wichtiger Tipp sein. Sie können die _JAVA_OPTIONS aus Ihren Systemvariablen löschen (verwenden Sie den Rapid Environment Editor), da sich Proguard sonst aus irgendeinem Grund beschweren könnte. Vielen Dank an Viktor
Simon
1

Ich kenne den Grund für diese Umgehung NICHT, aber es funktioniert immer für mich, wenn all dies nicht der Fall ist.

Starten Sie Eclipse nicht über eine Verknüpfung oder einen Link. Öffnen Sie es immer aus dem eclipse.exeOrdner in Ihrem Eclipse-Ordner, in dem sich der Ordner befindeteclipse.ini

Hinweis - Ich habe es nur für Linux versucht.

Atul O Holic
quelle
1

Um diese nervige Meldung zu vermeiden, musste ich meine Konfiguration wie folgt ändern:

-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

basierend auf der als richtig markierten Antwort, die sich ändert

-XX:MaxPermSize=256m
-Xms512m
-Xmx1024m

und:

--launcher.XXMaxPermSize
1024m
Jorgesys
quelle
1
1) Open eclipse.ini file
2)change
-Xms40m
-Xmx512m
to 
-Xms512m
-Xmx1024m
3)Restart eclipse

Die gleiche eclipse.ini Datei wird in Eclipse in diesem Stammpfad von Eclipse selbst wie befindet:

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

Die gleiche Datei befindet sich im Android Studio-Projekt: -

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

Wenn diese Antworten nicht funktionieren (für mich nicht), versuchen Sie Folgendes:

1) Erstellen Sie eine Kopie Ihres Metadatenordners in Ihrem Arbeitsbereich.

2) Löschen Sie Ihr .metadata-Verzeichnis, nachdem Sie eine Kopie erstellt haben

3) Öffnen Sie Eclipse und schließen Sie Eclipse.

4) Kopieren Sie Ihren Plugins-Ordner von Ihren alten .metadata in Ihre neuen .metadata

5) Importieren Sie alle Projekte zurück in Ihren Arbeitsbereich

6) Bleib ruhig und Code an!

Tricknologie
quelle