最近一個朋友新寫了一個項目,隨著項目的擴大画侣,gradle的時間越來越長备埃,有一次竟然跑了四十分鐘姓惑,而且常常會出現(xiàn)!這讓我很是驚訝,下面為QQ給我發(fā)的圖片按脚。
之后沒多想就告訴他把settings-gradle-offline work設置了對勾
之后將app級別的build.gradle添加一下javaMaxHeapSize "4g"
本以為可以幫他解決問題挺益,結(jié)果告訴我還是慢,之后他告訴我有時候跑項目的時候會出現(xiàn)GC overhead limit exceeded 這個錯誤乘寒,但是是概率性的。
因為小弟不才對gc不太了解匪补,我就查了一下gc垃圾回收機制
找到了一篇博客https://blog.csdn.net/jiafu1115/article/details/7024323感覺講的很清晰伞辛,推薦看一下。
之后了解查找此錯誤為JDK6新增的錯誤類型夯缺。
原因:當GC為釋放很小空間占用大量時間時會拋出此異常
即(Sun 官方對此的定義:超過98%的時間用來做GC并且回收了不到2%的堆內(nèi)存時會拋出此異常)蚤氏。
一般是因為堆太小,導致異常的原因:沒有足夠的內(nèi)存踊兜。?
解決方案:在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
上面這一句根據(jù)自己電腦配置自行設置
其他三句為加快gradle的編譯速度
他告訴我編譯速度最慢也就一分多鐘了竿滨,至此問題已經(jīng)解決!
最后我向他推薦了Freeline ,它可以實現(xiàn)Android的秒級編譯,螞蟻金服旗下開發(fā),誰用誰知道!
開源地址:https://github.com/alibaba/freeline?
原理:https://yq.aliyun.com/articles/59122?spm=5176.8091938.0.0.1Bw3mU
下一篇準備記錄一下freeline的安裝以及基本用法于游,和自己曾經(jīng)遇到的一些問題毁葱。
從今往后每周會抽出一些時間,記錄一下在安卓開發(fā)中遇到的一些問題和解決方案贰剥,好記性不如爛筆頭倾剿,自己加油!