Não foi possível executar o limite de sobrecarga de dex: GC excedido no Eclipse

213

Quando baixei o projeto Git OsmAnd e fui compilá-lo, o Eclipse retornou estes erros:

[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 disse que eu tenho que mudar -Xms40m -Xmx384mem eclipse.ini. Falha na conversão para o formato Dalvik: Não foi possível executar o espaço de heap dex: Java .
Limpei o projeto e reiniciei o Eclipse, mas não ajudou.

Encontrei este link: Dicas para desenvolvedor do Android: “Falha na conversão para o formato Dalvik: não é possível executar o dex: null” Mas não sei em qual .jarprojeto do meu projeto alterar a entrada. Se alguém puder ajudar, posso enviar o projeto para eles.

DavyJonesUA
fonte

Respostas:

437

Pode ser corrigido alterando os valores da VM no Eclipse.ini. Defina os valores para 512 e 1024 como abaixo:

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

A área alterada na imagem insira a descrição da imagem aqui

user1457659
fonte
8
Obrigado. Eu me pergunto por que os padrões ainda são absolutamente inadequados, não acho que alguém esteja executando o eclipse com menos de 512/1024 - apenas fui duas vezes mais. Além disso, desejo que as configurações sejam armazenadas em algum arquivo de configuração no meu diretório pessoal, em vez de um arquivo ini que é substituído a cada atualização.
Yashima
11
Você precisa --launcher.XXMaxPermSize 512mduas vezes?
Andrew Wyld
4
Quais são os limites para esses números? Quão alto devo considerar colocá-los?
easycheese
5
@MuhammadRiyaz Depende do seu sistema operacional e se você está usando uma JVM de 32 ou 64 bits. Se você estiver em uma JVM de 64 bits, poderá configurá-la com segurança para algo menor que o tamanho da RAM menos a sobrecarga para OS / outros aplicativos. Em uma VM de 32 bits, você deve mantê-lo menor que cerca de 1500M (no Linux) ou 1100M (no Windows) porque a VM precisa alocar espaço de endereço contíguo, e esse é um recurso muito limitado para aplicativos de 32 bits.
Jules
4
-XX: MaxPermSize = 1024m -Xms1024m -Xmx2048m ajudado
kreker
24

Para mim, seguindo os passos trabalhados

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

3)Restart eclipse

Veja aqui

Sunil Kumar Sahoo
fonte
11
No OSX, o arquivo eclipse.ini está em Eclipse.app/Contents/MacOS/
Ahmad Baraka
7

eclipse.ini fica assim.

-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
fonte
5

Deixe-me supor que esse problema foi causado pelo XML do Android, porque você o abre com muita frequência

Esses dois problemas a seguir no StackOverFlow são corrigidos entre si:

Sempre que clico em um arquivo XML do Android no Eclipse, ele carrega dados para todas as versões da API

e

Não foi possível executar dex: o limite superior do GC excedeu

Encontrei mais uma solução para resolver esse problema, além de aumentar os valores da VM ou fazer o downgrade para uma versão mais antiga do ADT (22.6.2 ou 23.2)

Nota:

Algumas das versões mais antigas do ADT que não carregam o XML todas as vezes que você abre, para que não haja excesso de memória, o que excedeu o limite de sobrecarga do GC, conforme discutido no primeiro encadeamento

Solução:

Na parte inferior do eclipse, haverá o símbolo da lata de lixo, que indica Run Garbage Collector . Sempre que você fechar um arquivo XML do Android, não se esqueça de clicar na Lixeira ou Executar o Garbage Collector para liberar memória. Dessa forma, você pode proteger o espaço de trabalho de travar esse tipo de erro: D

Esta poderia ser uma solução definitiva, porque você não pode aumentar o valor da VM além do seu limite de RAM se você abrir frequentemente o XML do seu Android, especialmente se você fizer muitas UI funcionar como eu: P

Espero que isso ajude todos que virão a este tópico :)

Mantenha a calma e o código

Akbar Sha Ebrahim
fonte
1

Após 12 horas com esse erro e sem sucesso com a alteração do arquivo eclipse.ini, finalmente encontrei a solução correta. Nas minhas variáveis ​​de ambiente, havia uma variável chamada "_JAVA_OPTIONS" contendo o valor "-Xmx512M". Alterando esse valor para o mesmo valor em eclipse.ini (-Xmx4096M), pude exportar meu projeto novamente para um arquivo APK.

Viktor
fonte
na verdade, essa pode ser uma dica muito importante, você pode excluir as _JAVA_OPTIONS das variáveis ​​do sistema (use o editor de ambiente rápido), caso contrário o programa poderá começar a reclamar por algum motivo. Muito obrigado a Viktor
Simon
1

Eu não sei o motivo por trás dessa solução alternativa, mas funciona para mim o tempo todo, quando todas as opções acima não.

Não inicie o eclipse a partir de um atalho ou link. Sempre abra-o eclipse.exena pasta eclipse, a própria pasta que contém o arquivoeclipse.ini

Nota - Eu tentei apenas para Linux.

Atul O Holic
fonte
1

Para evitar essa mensagem irritante, tive que alterar minha configuração da seguinte maneira:

-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

com base na resposta marcada como correta, alterando

-XX:MaxPermSize=256m
-Xms512m
-Xmx1024m

e:

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

O mesmo arquivo eclipse.ini estará localizado no Eclipse neste caminho raiz do próprio eclipse, como:

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

O mesmo arquivo estará localizado no projeto android studio: -

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

Se essas respostas não funcionarem (não funcionaram para mim), tente o seguinte:

1) Faça uma cópia da sua pasta .metadata no seu espaço de trabalho.

2) Exclua o diretório .metadata DEPOIS DE FAZER UMA CÓPIA

3) Abra o Eclipse e feche o Eclipse.

4) Copie a pasta de plug-ins do seu .metadata antigo para o seu novo .metadata

5) Importe todos os projetos de volta para sua área de trabalho

6) Mantenha a calma e o código!

truque
fonte