Не вдається виконати dex: в Eclipse перевищений накладний ліміт GC


213

Коли я завантажив проект OsmAnd Git і пішов його компілювати, 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проект міняти вхід. Якщо хтось може допомогти, я можу надіслати проект на їх.

Відповіді:


437

Це можна виправити, змінивши значення VM в Eclipse.ini. Встановіть значення 512 та 1024 як нижче:

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

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


8
Дякую. Цікаво, чому дефолти все ще такі абсолютно неадекватні, я не думаю, що хтось запускає затемнення з меншою ніж 512/1024 - я просто перейшов навіть удвічі більше. Плюс я б хотів, щоб налаштування зберігалися в якомусь конфігураційному файлі в моєму домашньому каталозі замість ini-файла, який перезаписується з кожним оновленням.
Ясіма

11
Вам потрібно --launcher.XXMaxPermSize 512mдвічі?
Ендрю Вільд

4
Які обмеження щодо цих чисел? Наскільки високо я повинен розглянути можливість їх розміщення?
easycheese

5
@MuhammadRiyaz Це залежить від вашої ОС та від того, чи використовуєте ви 32-бітний або 64-бітний JVM. Якщо ви користуєтесь 64-бітовим JVM, можете сміливо встановити його на що-небудь менше, ніж розмір оперативної пам’яті мінус накладні витрати для ОС / інших програм. У 32-бітному віртуальному комп'ютері ви хочете зберегти його менше, ніж приблизно 1500 М (для Linux) або 1100 М (для Windows), оскільки для VM потрібно виділити суміжний адресний простір, і це дуже обмежений ресурс для 32-бітних додатків.
Жуль

4
-XX: MaxPermSize = 1024м -Xms1024m -Xmx2048m допоміг
kreker


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

5

Дозвольте припустити, що ця проблема викликана Android XML, оскільки ви її дуже часто відкриваєте

Наступні два випуски на StackOverFlow перебувають між собою:

Щоразу, коли я клацаю на файлі Android XML у програмі Eclipse, він завантажує дані для всіх версій API

і

Неможливо виконати dex: перевищено накладний ліміт GC

Я знайшов ще одне рішення для вирішення цієї проблеми, окрім збільшення значень VM або повернення до більш старого варіанту ADT (22.6.2 або 23.2)

Примітка:

Деякі з старих версій ADT, які не завантажують XML кожного разу, коли ви відкриваєтесь, щоб не було переповнення пам’яті, що призвело б до перевищення цього накладного ліміту GC, як обговорювалось у першому потоці

Рішення:

У нижній частині затемнення буде символ сміття, який зазначає Run Garbage Collector . Щоразу, коли ви закриваєте XML-файл Android, не забудьте просто натиснути на смітник або запустити колектор сміття, щоб звільнити пам'ять. Таким чином ви можете захистити робочу область від збою подібної помилки: D

Це може бути найкращим рішенням, оскільки ви не можете збільшити значення VM за межами вашої оперативної пам’яті, якщо ви дуже часто відкриваєте XML для Android, особливо якщо багато інтерфейсу працює як я: P

Сподіваюся, це допоможе всім, хто прийде до цієї теми :)

Увімкніть спокій і код


1

Через 12 годин із цією помилкою та без успіху зі зміною файлу eclipse.ini я нарешті знайшов правильне рішення. У моєму середовищі змінна була змінна назва "_JAVA_OPTIONS", що містить значення "-Xmx512M". Змінивши це значення на те саме, що і в eclipse.ini (-Xmx4096M), я знову зміг експортувати свій проект у файл APK.


насправді це може бути дійсно важливою порадою, ви можете видалити _JAVA_OPTIONS зі змінних вашої системи (використовуйте швидкий редактор середовища), інакше прогуар може почати скаржитися з якихось причин. Велике спасибі Віктору
Саймону

1

Я НЕ знаю причини цього обходу, але він працює для мене весь час, коли все вищезазначене не робить.

Не починайте затемнення із скоромовки або посилання. Завжди відкривайте його eclipse.exeв папці затемнення, самій папці, в якій зберігається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

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

Цей самий файл eclipse.ini буде розташований у Eclipse у цьому кореневому шляху самого затемнення, як:

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

Цей самий файл буде розміщений в проекті студії Android: -

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) Утримуйте спокій і код увімкнено!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.