Impossibile eseguire dex: limite di overhead GC superato in Eclipse


213

Quando ho scaricato il progetto Git OsmAnd e sono andato a compilarlo, Eclipse ha restituito questi errori:

[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 e StackOverflow hanno detto che devo cambiare -Xms40m -Xmx384min eclipse.ini. Conversione al formato Dalvik non riuscita: impossibile eseguire dex: spazio heap Java .
Ho pulito il progetto e riavviato Eclipse, ma non ha aiutato.

Ho trovato questo collegamento: Suggerimenti per gli sviluppatori Android: "Conversione al formato Dalvik fallita: Impossibile eseguire dex: null" Ma non so in quale .jarprogetto cambiare l'input. Se qualcuno può aiutare, posso inviare il progetto a loro.

Risposte:


437

Può essere risolto modificando i valori della VM in Eclipse.ini. Imposta i valori su 512 e 1024 come di seguito:

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

L'area modificata nell'immagine inserisci qui la descrizione dell'immagine


8
Grazie. Mi chiedo perché le impostazioni predefinite siano ancora così assolutamente inadeguate, non penso che nessuno stia eseguendo eclipse con meno di 512/1024 - sono andato anche a due volte. Inoltre vorrei che le impostazioni fossero memorizzate in un file di configurazione nella mia directory home invece che in un file ini che viene sovrascritto ad ogni aggiornamento.
Yashima

11
Ti servono --launcher.XXMaxPermSize 512mdue volte?
Andrew Wyld

4
Quali sono i limiti di questi numeri? Quanto in alto dovrei considerare di metterli?
easycheese

5
@MuhammadRiyaz Dipende dal tuo sistema operativo e se stai utilizzando una JVM a 32 o 64 bit. Se utilizzi una JVM a 64 bit, puoi tranquillamente impostarla su qualcosa di più piccolo della dimensione della RAM meno il sovraccarico per il sistema operativo / altre applicazioni. Su una VM a 32 bit, ti consigliamo di mantenerla più piccola di circa 1500 M (su Linux) o 1100 M (su Windows) perché la VM deve allocare spazio di indirizzi contiguo, e questa è una risorsa molto limitata per le app a 32 bit.
Jules

4
-XX: MaxPermSize = 1024m -Xms1024m -Xmx2048m aiutato
kreker

24

Per me i seguenti passaggi hanno funzionato

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

3)Restart eclipse

Vedere qui


11
Su OSX il file eclipse.ini è su Eclipse.app/Contents/MacOS/
Ahmad Baraka

7

eclipse.ini ha questo aspetto.

-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

Presumo che questo problema sia causato dall'XML di Android, perché lo si apre molto spesso

I seguenti due problemi su StackOverFlow sono collegati tra loro:

Ogni volta che faccio clic su un file XML Android in Eclipse, carica i dati per tutte le versioni dell'API

e

Impossibile eseguire dex: limite di overhead GC superato

Ho trovato un'altra soluzione per risolvere questo problema oltre all'aumento dei valori della VM o al downgrade a una versione precedente di ADT (22.6.2 o 23.2)

Nota:

Alcune delle versioni precedenti di ADT che non caricheranno l'XML ogni volta che apri, quindi non c'è overflow di memoria per causare il superamento di questo limite di overhead GC come discusso nel primo thread

Soluzione:

Nella parte inferiore dell'eclissi ci sarà il simbolo del cestino che indica Esegui Garbage Collector . Ogni volta che chiudi un file XML di Android, non dimenticare di fare clic sul Cestino o su Esegui Garbage Collector per liberare memoria. In questo modo puoi proteggere l'area di lavoro dall'arresto anomalo di questo tipo di errore: D

Questa potrebbe essere una soluzione definitiva perché non puoi aumentare il valore della VM oltre il tuo limite di RAM se apri molto spesso il tuo XML Android, specialmente se fai molte interfacce utente come me: P

Spero che questo possa aiutare tutti coloro che verranno in questo thread :)

Mantieni la calma e leggi il codice


1

Dopo 12 ore con questo errore e nessun successo con la modifica del file eclipse.ini ho finalmente trovato la soluzione corretta. Nelle mie variabili d'ambiente c'era una variabile denominata "_JAVA_OPTIONS" contenente il valore "-Xmx512M". Modificando questo valore allo stesso valore di eclipse.ini (-Xmx4096M) sono stato di nuovo in grado di esportare il mio progetto in un file APK.


in realtà questo può essere un suggerimento davvero importante, puoi eliminare _JAVA_OPTIONS dalle tue variabili di sistema (usa l'editor di ambiente rapido) altrimenti proguard potrebbe iniziare a lamentarsi per qualche motivo. Grazie mille a Viktor
Simon

1

NON conosco il motivo dietro questa soluzione, ma per me funziona sempre quando tutto quanto sopra non lo fa.

Non avviare Eclipse da una scorciatoia o da un collegamento. Aprilo sempre dalla eclipse.execartella nella tua eclipse, la stessa cartella che contiene il fileeclipse.ini

Nota: ho provato solo per Linux.


1

Per evitare questo fastidioso messaggio, ho dovuto modificare la mia configurazione come segue:

-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

in base alla risposta contrassegnata come corretta, cambiando

-XX:MaxPermSize=256m
-Xms512m
-Xmx1024m

e:

--launcher.XXMaxPermSize
1024m

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

Lo stesso file eclipse.ini si troverà in Eclipse in questo percorso radice di eclipse stesso come:

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

Lo stesso file si troverà nel progetto Android Studio: -

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

0

Se queste risposte non funzionano (non hanno funzionato per me), prova questo:

1) Crea una copia della tua cartella .metadata nel tuo spazio di lavoro.

2) Elimina la tua directory .metadata DOPO AVER FATTO UNA COPIA

3) Apri Eclipse e chiudi Eclipse.

4) Copiare la cartella dei plugin dal vecchio .metadata al nuovo .metadata

5) Importa di nuovo tutti i progetti nel tuo spazio di lavoro

6) Mantieni la calma e leggi il codice!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.