Невозможно выполнить dex: превышен предел издержек GC в Eclipse

213

Когда я скачал Git-проект OsmAnd и пошел его компилировать, Eclipse вернул эти ошибки:

[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 и Stackoverflow сказал , что я должен изменить -Xms40m -Xmx384mв eclipse.ini. Ошибка преобразования в формат Dalvik: Невозможно выполнить dex: пространство кучи Java .
Я очистил проект и перезапустил Eclipse, но это не помогло.

Я нашел эту ссылку: Советы для разработчика Android: «Ошибка преобразования в формат Dalvik: Невозможно выполнить dex: null» Но я не знаю, в каком .jarиз моего проекта изменить вход. Если кто-то может помочь, я могу отправить проект в их.

DavyJonesUA
источник

Ответы:

437

Это можно исправить, изменив значения виртуальной машины в Eclipse.ini. Установите значения 512 и 1024, как показано ниже:

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

Измененная область в изображении введите описание изображения здесь

user1457659
источник
8
Спасибо. Интересно, почему значения по умолчанию все еще настолько неадекватны, что я не думаю, что кто-либо использует затмение с менее чем 512/1024 - я просто увеличил это вдвое. Кроме того, я бы хотел, чтобы настройки были сохранены в каком-то конфигурационном файле в моем домашнем каталоге, а не в ini-файле, который перезаписывается при каждом обновлении.
Яшима
11
Тебе нужно --launcher.XXMaxPermSize 512mдважды?
Эндрю Уайлд
4
Каковы ограничения на эти цифры? Как высоко я должен рассмотреть их размещение?
easycheese
5
@MuhammadRiyaz Это зависит от вашей ОС и от того, используете ли вы 32-битную или 64-битную JVM. Если вы используете 64-битную JVM, вы можете смело устанавливать для нее все, что меньше размера вашей оперативной памяти, минус накладные расходы для ОС / других приложений. На 32-битной виртуальной машине вы захотите, чтобы она была меньше 1500 МБ (в Linux) или 1100 МБ (в Windows), поскольку виртуальной машине необходимо выделять непрерывное адресное пространство, а это очень ограниченный ресурс для 32-битных приложений.
Жюль
4
-XX: MaxPermSize = 1024m -Xms1024m -Xmx2048m помогли
крекер
24

У меня сработали следующие шаги

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

3)Restart eclipse

Посмотреть здесь

Сунил Кумар Саху
источник
11
На OSX файл eclipse.ini находится на Eclipse.app/Contents/MacOS/
Ахмад Барака
7

eclipse.ini выглядит так.

-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
источник
5

Позвольте мне предположить, что эта проблема возникла из-за Android XML, потому что очень часто вы открываете ее

Эти следующие две проблемы в StackOverFlow реализуются друг с другом:

Каждый раз, когда я нажимаю на XML-файл Android в Eclipse, он загружает данные для всех версий API

и

Невозможно выполнить dex: превышен лимит накладных расходов GC

Я нашел еще одно решение для решения этой проблемы, кроме увеличения значений виртуальной машины или понижения до более старой версии ADT (22.6.2 или 23.2)

Примечание:

Некоторые из более старых версий ADT, которые не будут загружать XML каждый раз, когда вы открываете его, поэтому нет переполнения памяти, из-за которого превышен предел накладных расходов GC, как обсуждалось в первом потоке.

Решение:

В нижней части затмения будет символ мусорного ведра с надписью Run Garbage Collector . Всякий раз, когда вы закрываете XML-файл Android, не забудьте просто нажать на Корзину или Запустить сборщик мусора. чтобы освободить память. Таким образом, вы можете защитить рабочую область от сбоя такого рода ошибки: D

Это может быть оптимальным решением, потому что вы не можете увеличить значение виртуальной машины сверх предела ОЗУ, если вы очень часто открываете свой Android-XML, особенно если вы работаете с большим количеством пользовательских интерфейсов, подобных мне: P

Надеюсь, это поможет всем, кто придет в эту ветку :)

Сохраняйте спокойствие и код на

Акбар Ша Эбрахим
источник
1

После 12 часов с этой ошибкой и безуспешного изменения файла eclipse.ini я наконец нашел правильное решение. В моих переменных среды была переменная с именем "_JAVA_OPTIONS", содержащая значение "-Xmx512M". Изменив это значение на то же, что и в eclipse.ini (-Xmx4096M), я снова смог экспортировать свой проект в файл APK.

Виктор
источник
на самом деле это может быть очень важным советом, вы можете удалить _JAVA_OPTIONS из системных переменных (используйте быстрый редактор среды), в противном случае proguard может начать жаловаться по какой-то причине. Большое спасибо Виктору
Симону
1

Я НЕ знаю причину этого обходного пути, но он работает для меня все время, когда все вышеперечисленное не работает.

Не начинайте затмение с ярлыка или ссылки. Всегда открывайте его из eclipse.exeпапки Eclipse, той самой папки, которая содержитeclipse.ini

Примечание - я пробовал только для Linux.

Атул О Холич
источник
1

Чтобы избежать этого неприятного сообщения, мне пришлось изменить свою конфигурацию следующим образом:

-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

на основании ответа, помеченного как правильный, меняется

-XX:MaxPermSize=256m
-Xms512m
-Xmx1024m

и:

--launcher.XXMaxPermSize
1024m
Jorgesys
источник
1
1) Open eclipse.ini file
2)change
-Xms40m
-Xmx512m
to 
-Xms512m
-Xmx1024m
3)Restart eclipse

Тот же файл eclipse.ini будет расположен в Eclipse в этом корневом пути самого eclipse, например:

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

Этот же файл будет находиться в проекте android studio: -

C:\Users\username\AppData\Local\Android\sdk\tools\lib\monitor-x86_64\monitor(Type:Configuration settings)
ананд криш
источник
0

Если эти ответы не работают (они не для меня), попробуйте это:

1) Сделайте копию вашей папки .metadata в вашей рабочей области.

2) Удалите каталог .metadata ПОСЛЕ создания копии

3) Откройте Eclipse и закройте Eclipse.

4) Скопируйте папку с плагинами из старых .metadata в новые .metadata

5) Импортируйте все проекты обратно в рабочее пространство

6) Сохраняйте спокойствие и код на!

tricknology
источник