Impossible d'exécuter dex: la limite de surcharge du GC a été dépassée dans Eclipse


213

Lorsque j'ai téléchargé le projet Git OsmAnd et suis allé le compiler, Eclipse a renvoyé ces erreurs:

[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 et Stackoverflow dit que je dois changer -Xms40m -Xmx384mdans eclipse.ini. Échec de la conversion au format Dalvik: impossible d'exécuter dex: espace de tas Java .
J'ai nettoyé le projet et redémarré Eclipse, mais cela n'a pas aidé.

J'ai trouvé ce lien: Astuces pour le développeur Android: "La conversion au format Dalvik a échoué: impossible d'exécuter dex: null" Mais je ne sais pas à .jarpartir de quel projet modifier l'entrée. Si quelqu'un peut m'aider, je peux envoyer le projet à leur.

Réponses:


437

Il peut être résolu en modifiant les valeurs de la machine virtuelle dans Eclipse.ini. Définissez les valeurs sur 512 et 1024 comme ci-dessous:

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

La zone modifiée dans l'image entrez la description de l'image ici


8
Merci. Je me demande pourquoi les valeurs par défaut sont toujours si inadéquates, je ne pense pas que quiconque exécute Eclipse avec moins de 512/1024 - je suis même allé jusqu'à deux fois. De plus, je souhaite que les paramètres soient stockés dans un fichier de configuration dans mon répertoire personnel au lieu d'un fichier ini qui est écrasé à chaque mise à niveau.
Yashima

11
Avez-vous besoin de --launcher.XXMaxPermSize 512mdeux fois?
Andrew Wyld

4
Quelles sont les limites de ces chiffres? À quelle hauteur dois-je envisager de les mettre?
easycheese

5
@MuhammadRiyaz Cela dépend de votre système d'exploitation et si vous utilisez une machine virtuelle Java 32 bits ou 64 bits. Si vous utilisez une machine virtuelle Java 64 bits, vous pouvez la régler en toute sécurité sur une valeur inférieure à la taille de votre RAM moins les frais généraux pour le système d'exploitation / d'autres applications. Sur une machine virtuelle 32 bits, vous souhaiterez la maintenir inférieure à environ 1500 Mo (sous Linux) ou 1100 Mo (sous Windows) car la machine virtuelle doit allouer un espace d'adressage contigu, et c'est une ressource très limitée pour les applications 32 bits.
Jules

4
-XX: MaxPermSize = 1024m -Xms1024m -Xmx2048m aidé
kreker

24

Pour moi, les étapes suivantes ont fonctionné

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

3)Restart eclipse

Vois ici


11
Sur OSX, le fichier eclipse.ini se trouve sur Eclipse.app/Contents/MacOS/
Ahmad Baraka

7

eclipse.ini ressemble à ceci.

-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

Permettez-moi de supposer que ce problème est dû au XML Android, car très souvent vous l'ouvrez

Ces deux problèmes suivants sur StackOverFlow sont liés l'un à l'autre:

Chaque fois que je clique sur un fichier XML Android dans Eclipse, il charge des données pour toutes les versions d'API

et

Impossible d'exécuter dex: dépassement de la limite de surcharge du GC

J'ai trouvé une autre solution pour résoudre ce problème autre que l'augmentation des valeurs de la machine virtuelle ou la rétrogradation vers une ancienne version ADT (22.6.2 ou 23.2)

Remarque:

Certaines des anciennes versions d'ADT qui ne chargeront pas le XML à chaque ouverture, il n'y a donc pas de dépassement de mémoire pour provoquer le dépassement de cette limite de surcharge du GC, comme indiqué dans le premier thread

Solution:

Au bas de l'éclipse, il y aura un symbole de poubelle qui indique Run Garbage Collector . Chaque fois que vous fermez un fichier XML d'Android, n'oubliez pas de cliquer simplement sur la corbeille ou d' exécuter Garbage Collector pour libérer de la mémoire. De cette façon, vous pouvez protéger l'espace de travail contre le plantage de ce type d'erreur: D

Cela pourrait être une solution ultime car vous ne pouvez pas augmenter la valeur de la machine virtuelle au-delà de votre limite de RAM si vous ouvrez très fréquemment votre XML Android, surtout si vous faites beaucoup d'interfaces utilisateur comme moi: P

J'espère que cela aiderait tous ceux qui viendront sur ce sujet :)

Restez calme et codez


1

Après 12 heures avec cette erreur et sans succès avec la modification du fichier eclipse.ini, j'ai finalement trouvé la bonne solution. Dans mes variables d'environnement, il y avait une variable nommée "_JAVA_OPTIONS" contenant la valeur "-Xmx512M". Modification de cette valeur à la même valeur que dans eclipse.ini (-Xmx4096M) J'ai de nouveau pu exporter mon projet vers un fichier APK.


en fait, cela peut être un conseil vraiment important, vous pouvez supprimer les _JAVA_OPTIONS de vos variables système (utiliser l'éditeur d'environnement rapide) sinon proguard pourrait commencer à se plaindre pour une raison quelconque. Merci beaucoup à Viktor
Simon

1

Je ne connais pas la raison de cette solution de contournement, mais cela fonctionne pour moi tout le temps quand tout ce qui précède ne le fait pas.

Ne démarrez pas Eclipse à partir d'un raccourci ou d'un lien. Ouvrez-le toujours à partir eclipse.exede votre dossier eclipse, le dossier même qui contient leeclipse.ini

Remarque - J'ai essayé uniquement pour Linux.


1

Pour éviter ce message ennuyeux, j'ai dû changer ma configuration comme suit:

-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

basé sur la réponse marquée comme correcte, changeant

-XX:MaxPermSize=256m
-Xms512m
-Xmx1024m

et:

--launcher.XXMaxPermSize
1024m

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

Le même fichier eclipse.ini sera situé dans Eclipse dans ce chemin racine d'éclipse lui-même comme:

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

Le même fichier sera situé dans le projet de studio Android: -

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

0

Si ces réponses ne fonctionnent pas (elles ne l'ont pas fait pour moi), essayez ceci:

1) Faites une copie de votre dossier .metadata dans votre espace de travail.

2) Supprimez votre répertoire .metadata APRÈS AVOIR FAIT UNE COPIE

3) Ouvrez Eclipse et fermez Eclipse.

4) Copiez votre dossier de plugins de votre ancien .metadata vers votre nouveau .metadata

5) Réimportez tous les projets dans votre espace de travail

6) Gardez votre calme et codez!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.