问题描述
- 编译android程序出现OOM
-
使用 jdk-7u79-windows-x64,android 5.0.1,IntelliJ IDEA Community Edition 14.0.2编译程序,出现OOM:Error:Android Dex: java.lang.OutOfMemoryError: GC overhead limit exceeded
Error:Android Dex: at java.util.BitSet.initWords(BitSet.java:164)
Error:Android Dex: at java.util.BitSet.(BitSet.java:159)
Error:Android Dex: at com.android.dx.ssa.back.LivenessAnalyzer.(LivenessAnalyzer.java:116)
Error:Android Dex: at com.android.dx.ssa.back.LivenessAnalyzer.constructInterferenceGraph(LivenessAnalyzer.java:93)
Error:Android Dex: at com.android.dx.ssa.back.SsaToRop.(SsaToRop.java:82)idea64.exe.vmoptions文件配置:
-Xms640m
-Xmx2048m
-XX:MaxPermSize=1024m
-XX:ReservedCodeCacheSize=225m
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djsse.enableSNIExtension=false
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50不知道为什么编译出现内存溢出?
解决方案
代码问题。
临时可加这个看能否解决:-XX:-UseGCOverheadLimit
如果要分析,加这两个参数分析-verbose:gc -XX:+PrintGCDetails
解决方案二:
-XX:-UseGCOverheadLimit这个试过了,最后还是OOM了。。
解决方案三:
那打断点,检查函数调用栈,看看哪个方法最后调用到了BitSet.java:164
这里,
你的代码中一定有长时间占用内存,不释放的东西。