急!!android编译遇到java.lang.OutOfMemoryError: GC overhead limit exceeded错误

jacobin 2011-05-30 09:58:15
在编译android2.3的工程时遇到错误
UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.HashSet.<init>(HashSet.java:125)
at com.android.dx.dex.code.StdCatchBuilder.getCatchTypes(StdCatchBuilder.java:97)
at com.android.dx.dex.code.DalvCode.getCatchTypes(DalvCode.java:166)
at com.android.dx.dex.file.CodeItem.addContents(CodeItem.java:126)
at com.android.dx.dex.file.MixedItemSection.prepare0(MixedItemSection.java:280)
at com.android.dx.dex.file.Section.prepare(Section.java:214)
at com.android.dx.dex.file.DexFile.toDex0(DexFile.java:486)
at com.android.dx.dex.file.DexFile.toDex(DexFile.java:196)
at com.android.dx.command.dexer.Main.writeDex(Main.java:427)
at com.android.dx.command.dexer.Main.run(Main.java:180)
at com.android.dx.command.dexer.Main.main(Main.java:157)
at com.android.dx.command.Main.main(Main.java:89)
make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex] Error 3

编译环境为ubuntu10.10

在网上搜索了一下解决方法
二、解释:
JDK6新增错误类型。当GC为释放很小空间占用大量时间时抛出。
一般是因为堆太小。导致异常的原因:没有足够的内存。

三、解决方案:
1、查看系统是否有使用大内存的代码或死循环。
2、可以添加JVM的启动参数来限制使用内存:-XX:-UseGCOverheadLimit

但是不知道如何去添加JVM启动参数
哪位大虾能指点一下,给一个详细的流程。

PS:相同的代码,在另一台配置一样的机器上可以编译通过,见鬼了..
在线等

...全文
16161 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianwei824 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wenzheng38 的回复:]
把JAva虚拟机的内存设大点java -Xmx2048 -Xms1024
[/Quote]

用这个还是不行,提示

Error occurred during initialization of VM
Too small initial heap
jacobin 2011-06-03
  • 打赏
  • 举报
回复
通过跟另一台编译服务器比较,发现出问题的机器上同时安装 openJdk 和 Sun-Jdk(都是1.6),而没出问题的机器上只安装了OpenJdk,在有问题的机器上把Sun-Jdk卸载之后,编译便莫名其妙的通过了。
个人感觉应该跟用哪个JDK没有关系。
wenzheng38 2011-06-02
  • 打赏
  • 举报
回复
把JAva虚拟机的内存设大点java -Xmx2048 -Xms1024
binglong168 2011-06-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wenzheng38 的回复:]

把JAva虚拟机的内存设大点java -Xmx2048 -Xms1024
[/Quote]

这个我在dx和dx.bat中都设置过,还是不行
ameyume 2011-06-01
  • 打赏
  • 举报
回复
没遇到过这种情况,编译是很费劲,我的曾经因为笔记本风扇通风口被灰尘团堵塞了,导致编译一会就自动关机。后来按照流程就可以编译过了。
binglong168 2011-06-01
  • 打赏
  • 举报
回复
我也遇到这个相似的情况,还在研究中.
Copying: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes-full-debug.jar
Copying: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes-full-names.jar
Copying: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
target Dex: framework

UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: Java heap space
at com.android.dx.ssa.SetFactory.makeInterferenceSet(SetFactory.java:79)
at com.android.dx.ssa.back.InterferenceGraph.<init>(InterferenceGraph.java:53)
at com.android.dx.ssa.back.LivenessAnalyzer.constructInterferenceGraph(LivenessAnalyzer.java:91)
at com.android.dx.ssa.back.SsaToRop.<init>(SsaToRop.java:89)
at com.android.dx.ssa.back.SsaToRop.convertToRopMethod(SsaToRop.java:76)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:103)
at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:74)
at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:269)
at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:131)
at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:85)
at com.android.dx.command.dexer.Main.processClass(Main.java:299)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:278)
at com.android.dx.command.dexer.Main.access$100(Main.java:56)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
at com.android.dx.command.dexer.Main.processOne(Main.java:247)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:183)
at com.android.dx.command.dexer.Main.run(Main.java:139)
at com.android.dx.command.dexer.Main.main(Main.java:120)
at com.android.dx.command.Main.main(Main.java:89)
make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.dex] Error 3

我这个是2.2的代码,编译环境为ubuntu10.04-64bit,4G物理内存。在别的同样的系统上可以编译通过...
jacobin 2011-05-31
  • 打赏
  • 举报
回复
呃,没有高手能帮我搞定吗
jacobin 2011-05-30
  • 打赏
  • 举报
回复
自己顶一下
easycoola 2011-05-30
  • 打赏
  • 举报
回复
顶一个
说明: =================================================================== 1). dex 转 jar 用的 enjarify,比目前常用的 dex2jar(d2j) 要稳定可靠得多,尤其是在处理重度混淆过的apk时 2). 用于对apk进行代码修改,扫描目标apk中函数,并在指定函数的开头部分 添加 调用自定义静态函数的代码 3). 省略 jar 转 smali 再回转的步骤,转而使用 objectweb.asm(ow2) 直接对 jar 文件进行 smali 注入 4). dex2jar 的步骤使用的是 google 自家的 enjarify 工具,没使用老掉牙的、对部分混淆apk处理极不准确极不稳定的 dex2jar(d2j) 5). jar2dex 使用的是 android studio 自带的 dx.bat 工具,貌似 dex2jar(d2j) 在做jar回转的时候也是调用dx.jar 6). 手机无需 root 要求: =================================================================== 已安装 jdk1.7 或 jdk1.8 已安装 Android Studio 已安装 pypy3 或者 python,pypy3 下载地址:http://download.csdn.net/detail/jizhitp/9902691 步骤: =================================================================== 1). 使用 jeb、jadx、jd 等静态分析工具分析源apk,确定要注入代码的类及函数 2). 用记事本打开 main.bat,设置正确的路径,以及源apk文件名 3). 在当前文件夹空白处点一下,然后按 shift + 右击,选择 "在此处打开命令行窗口" 4). 编辑静态类源文件:SmaliInjector\android\StaticClass.java,这个类将会被包进目标apk中 5). 编辑注入器源文件:SmaliInjector\pc\Injector.java,这是注入器关键文件,作用是调用ow2.asm来对目标jar中特定类的特定函数进行代码注入 6). 运行 main.bat即可 错误处理: =================================================================== 1). 此工具默认使用pypy来运行py脚本,若想使用 python 请打开 google_enjarify\enjarify.bat 把 pypy 改成 python 2). 安装重包后的apk时,若出现 INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES 错误,请将手机中原有的应用卸载后再安装 3). android.jar 最好选用跟目标手机版本一致的,否则重包后的apk几乎100%闪退 4). 若在 jar 转加 dex 的过程中出现 java.lang.OutOfMemoryError: GC overhead limit exceeded错误,请调大 main.bat 中的 -Xmx 和 -Xss 其它: =================================================================== 1). pypy3 比 python 快蛮多,推荐使用 2). enjarify 有两种模式: 默认的模式,转换出来的代码阅读性比较好,但比较慢 --fast 快速模式 3). main.bat 内有两个便捷开关,赋值表示启用,参数留空表示开关不启用 Resign_Only 是否只做 重签名 的动作,可用于验证目标 apk 有没有做签名保护 SkipDex2jar 是否跳过 dex 转 jar 的步骤,转换很耗时,第二次调用 main.bat 时可以选择跳过,能省蛮多时间

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧