无法在Eclipse中执行dex:GC开销限制

Dav*_*sUA 211 java android out-of-memory dalvik

当我下载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
Run Code Online (Sandbox Code Playgroud)

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

我找到了这个链接:Android开发人员的提示:"转换为Dalvik格式失败:无法执行dex:null" 但我不知道哪个.jar从我的项目中更改输入.如果有人可以提供帮助,我可以将项目发送到他们.

小智 437

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

openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms512m
-Xmx1024m
Run Code Online (Sandbox Code Playgroud)

图像中更改的区域 在此输入图像描述

  • 你需要两次`--launcher.XXMaxPermSize 512m`吗? (11认同)
  • 谢谢.我想知道为什么默认值仍然是如此绝对不足,我不认为有人在低于512/1024的情况下运行eclipse - 我只是去了两倍.另外,我希望设置存储在我的主目录中的某个配置文件中,而不是每次升级都会覆盖的ini文件. (8认同)
  • @MuhammadRiyaz这取决于您的操作系统以及您是使用32位还是64位JVM.如果您使用的是64位JVM,则可以安全地将其设置为小于RAM大小的任何值,减去OS /其他应用程序的开销.在32位虚拟机上,您需要将其保持小于大约1500M(在Linux上)或1100M(在Windows上),因为虚拟机需要分配连续的地址空间,这对于32位应用程序来说是非常有限的资源. (5认同)
  • 这些数字的限制是什么?我应该考虑把它们放多高? (4认同)
  • -XX:MaxPermSize = 1024m -Xms1024m -Xmx2048m帮助 (4认同)

Sun*_*hoo 24

对我来说,遵循以下步骤

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

3)Restart eclipse
Run Code Online (Sandbox Code Playgroud)

看这里

  • 在OSX上eclipse.ini文件在Eclipse.app/Contents/MacOS/上 (11认同)

Roa*_*ies 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
Run Code Online (Sandbox Code Playgroud)


Akb*_*him 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,就不能将VM值增加到RAM限制之外,特别是如果你做了很多像我这样的UI工作:P

我希望这会帮助每个人来这个主题:)

保持冷静和代码