No se puede ejecutar dex: se ha excedido el límite de gastos generales del GC en Eclipse


213

Cuando descargué el proyecto Git OsmAnd y fui a compilarlo, Eclipse devolvió estos errores:

[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 y Stackoverflow dijeron que debo cambiar -Xms40m -Xmx384men eclipse.ini. La conversión al formato Dalvik falló: no se puede ejecutar dex: espacio de almacenamiento dinámico de Java .
Limpié el proyecto y reinicié Eclipse, pero no ayudó.

Encontré este enlace: Consejos para el desarrollador de Android: "Error de conversión al formato Dalvik: no se puede ejecutar dex: null" Pero no sé en qué parte .jarde mi proyecto cambiar la entrada. Si alguien puede ayudar, puedo enviar el proyecto a ellos.

Respuestas:


437

Se puede solucionar cambiando los valores de VM en Eclipse.ini. Establezca los valores en 512 y 1024 como se muestra a continuación:

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

El área cambiada en la imagen ingrese la descripción de la imagen aquí


8
Gracias. Me pregunto por qué los valores predeterminados siguen siendo tan inadecuados que no creo que nadie esté ejecutando eclipse con menos de 512/1024, solo fui el doble de eso. Además, deseo que la configuración se almacene en algún archivo de configuración en mi directorio de inicio en lugar de un archivo ini que se sobrescribe con cada actualización.
Yashima

11
¿Necesitas --launcher.XXMaxPermSize 512mdos veces?
Andrew Wyld

44
¿Cuáles son los límites de estos números? ¿Qué tan alto debería considerar ponerlos?
easycheese

55
@MuhammadRiyaz Depende de su sistema operativo y de si está utilizando una JVM de 32 o 64 bits. Si tiene una JVM de 64 bits, puede configurarla de manera segura en cualquier tamaño más pequeño que el tamaño de su RAM menos la sobrecarga para el SO / otras aplicaciones. En una VM de 32 bits, querrá mantenerla más pequeña que aproximadamente 1500M (en Linux) o 1100M (en Windows) porque la VM necesita asignar espacio de direcciones contiguas, y ese es un recurso muy limitado para aplicaciones de 32 bits.
Julio

44
-XX: MaxPermSize = 1024m -Xms1024m -Xmx2048m ayudó
kreker

24

Para mí, los siguientes pasos funcionaron

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

3)Restart eclipse

Mira aquí


11
En OSX, el archivo eclipse.ini está en Eclipse.app/Contents/MacOS/
Ahmad Baraka

7

eclipse.ini se parece a esto.

-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

Permítanme suponer que este problema se debe al XML de Android, porque con mucha frecuencia lo están abriendo

Los siguientes dos problemas en StackOverFlow se relacionan entre sí:

Cada vez que hago clic en un archivo XML de Android en Eclipse, carga datos para todas las versiones de API

y

No se puede ejecutar dex: se ha excedido el límite superior del GC

Encontré una solución más para resolver este problema que no sea aumentar los valores de VM o degradar a una versión ADT anterior (22.6.2 o 23.2)

Nota:

Algunas de las versiones anteriores de ADT que no cargarán el XML cada vez que se abre, por lo que no hay desbordamiento de memoria que provoque que este límite de sobrecarga del GC se exceda como se discutió en el primer subproceso

Solución:

En la parte inferior del eclipse habrá un símbolo de la papelera que indica Ejecutar recolector de basura . Cada vez que cierre un archivo XML de Android, no olvide hacer clic en la Papelera o Ejecutar Garbage Collector para liberar memoria. De esta manera, puede proteger el espacio de trabajo para evitar este tipo de error: D

Esta podría ser una solución definitiva porque no puede aumentar el valor de VM más allá de su límite de RAM si abre con frecuencia su XML de Android, especialmente si hace mucha IU como yo: P

Espero que esto ayude a todos los que vendrán a este hilo :)

Mantenga la calma y el código


1

Después de 12 horas con este error y sin éxito al cambiar el archivo eclipse.ini, finalmente encontré la solución correcta. En mis variables de entorno había una variable llamada "_JAVA_OPTIONS" que contenía el valor "-Xmx512M". Cambiando este valor al mismo valor que en eclipse.ini (-Xmx4096M) pude nuevamente exportar mi proyecto a un archivo APK.


En realidad, esto puede ser un consejo muy importante, puede eliminar las _JAVA_OPTIONS de las variables de su sistema (use el editor de entorno rápido) de lo contrario, Proguard podría comenzar a quejarse por alguna razón. Muchas gracias a Viktor
Simon

1

NO sé la razón detrás de esta solución, pero funciona para mí todo el tiempo cuando todo lo anterior no.

No comience el eclipse desde un atajo o un enlace. Siempre ábralo desde la eclipse.execarpeta de su eclipse, la misma carpeta que contieneeclipse.ini

Nota: lo intenté solo para Linux.


1

Para evitar este mensaje molesto, tuve que cambiar mi configuración de la siguiente manera:

-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

basado en la respuesta marcada como correcta, cambiando

-XX:MaxPermSize=256m
-Xms512m
-Xmx1024m

y:

--launcher.XXMaxPermSize
1024m

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

El mismo archivo eclipse.ini se ubicará en Eclipse en esta ruta raíz del eclipse como:

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

El mismo archivo se ubicará en el proyecto de estudio de Android:

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

0

Si estas respuestas no funcionan (no lo hicieron para mí), intente esto:

1) Haga una copia de su carpeta .metadata en su espacio de trabajo.

2) Elimine su directorio .metadata DESPUÉS DE HACER UNA COPIA

3) Abra Eclipse y cierre Eclipse.

4) Copie su carpeta de complementos de su antiguo .metadata a su nuevo .metadata

5) Importa todos los proyectos nuevamente en tu espacio de trabajo

6) ¡Mantenga la calma y el código!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.