最近一个朋友新写了一个项目,随着项目的扩大,gradle的时间越来越长,有一次竟然跑了四十分钟,而且常常会出现!这让我很是惊讶,下面为QQ给我发的图片。
运行50分钟2333之后没多想就告诉他把settings-gradle-offline work设置了对勾
之后将app级别的build.gradle添加一下javaMaxHeapSize "4g"
本以为可以帮他解决问题,结果告诉我还是慢,之后他告诉我有时候跑项目的时候会出现GC overhead limit exceeded 这个错误,但是是概率性的。
因为小弟不才对gc不太了解,我就查了一下gc垃圾回收机制
找到了一篇博客https://blog.csdn.net/jiafu1115/article/details/7024323感觉讲的很清晰,推荐看一下。
之后了解查找此错误为JDK6新增的错误类型。
原因:当GC为释放很小空间占用大量时间时会抛出此异常
即(Sun 官方对此的定义:超过98%的时间用来做GC并且回收了不到2%的堆内存时会抛出此异常)。
一般是因为堆太小,导致异常的原因:没有足够的内存。
解决方案:在gradle.properties里添加如下代码
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
上面这一句根据自己电脑配置自行设置
其他三句为加快gradle的编译速度
他告诉我编译速度最慢也就一分多钟了,至此问题已经解决!
最后我向他推荐了Freeline ,它可以实现Android的秒级编译,蚂蚁金服旗下开发,谁用谁知道!
开源地址:https://github.com/alibaba/freeline
原理:https://yq.aliyun.com/articles/59122?spm=5176.8091938.0.0.1Bw3mU
下一篇准备记录一下freeline的安装以及基本用法,和自己曾经遇到的一些问题。
从今往后每周会抽出一些时间,记录一下在安卓开发中遇到的一些问题和解决方案,好记性不如烂笔头,自己加油!
网友评论