无法执行dex:Eclipse中超出了GC开销限制


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

谷歌和#2说,我必须改变-Xms40m -Xmx384meclipse.ini转换为Dalvik格式失败:无法执行dex:Java堆空间
我清理了项目并重新启动了Eclipse,但是它没有帮助。

我找到了此链接:针对Android开发人员的提示:“转换为Dalvik格式失败:无法执行dex:null” 但是我不知道.jar从项目中更改输入内容。如果有人可以帮助,我可以将项目发送至他们。

Answers:


437

可以通过更改Eclipse.ini中的VM值来解决。将值设置为512和1024,如下所示:

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

图片中的更改区域 在此处输入图片说明


8
谢谢。我想知道为什么默认值仍然绝对不够用,我不认为有人用少于512/1024的速度运行Eclipse-我什至只使用了两倍。另外,我希望这些设置存储在我的主目录中的某些配置文件中,而不是每次升级都会覆盖的ini文件中。
Yashima 2012年

11
需要--launcher.XXMaxPermSize 512m两次吗?
安德鲁·怀尔德

4
这些数字有什么限制?我应该考虑把它们放多高?
easycheese 2014年

5
@MuhammadRiyaz取决于您的操作系统以及您使用的是32位还是64位JVM。如果您使用的是64位JVM,则可以将其安全地设置为小于RAM大小减去操作系统/其他应用程序开销的任何值。在32位VM上,由于VM需要分配连续的地址空间,因此您希望使其小于1500M(在Linux上)或1100M(在Windows上),这对于32位应用程序来说是非常有限的资源。
2014年

4
-XX:MaxPermSize = 1024m -Xms1024m -Xmx2048m帮助
kreker 2015年


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的以下两个问题:

每次我在Eclipse中单击一个Android XML文件时,都会加载所有API版本的数据

无法执行dex:超出了GC开销限制

我找到了另一种解决方案除了增加VM值或降级到较旧的ADT版本(22.6.2或23.2)外,了解决此问题的另

注意:

一些较旧的ADT版本每次打开时都不会加载XML,因此不会发生内存溢出,从而不会超出第一个线程上讨论的GC开销限制

解:

在月食的底部将出现垃圾桶符号,表示运行垃圾收集器。每当您关闭android的XML文件时,不要忘记单击垃圾箱运行垃圾收集器以释放内存。这样,您可以保护工作区免于崩溃这种错误:D

这可能是一个最终的解决方案,因为如果您经常打开android XML,尤其是当您执行很多像我这样的UI时,就无法将VM值增加到超出RAM限制。

我希望这将对所有参与此主题的人有所帮助:)

保持冷静和编码


1

经过12个小时的错误提示并没有成功更改eclipse.ini文件,我终于找到了正确的解决方案。在我的环境变量中,有一个名为“ _JAVA_OPTIONS”的变量,其中包含值“ -Xmx512M”。将此值更改为与eclipse.ini(-Xmx4096M)中相同的值,我再次能够将项目导出到APK文件。


实际上,这可能是一个非常重要的提示,您可以从系统变量中删除_JAVA_OPTIONS(使用快速环境编辑器),否则proguard可能由于某些原因而开始抱怨。非常感谢Viktor
Simon,

1

我不知道这种解决方法的原因,但是在上述所有方法都不起作用的情况下,它始终对我有用。

不要从快捷方式或链接开始蚀。始终从eclipse.exeeclipse文件夹中的文件夹中打开该文件夹,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本身的根路径中的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)将您的plugins文件夹从旧的.metadata复制到新的.metadata

5)将所有项目导入回您的工作区

6)保持冷静和代码!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.