好多应用闪退问题都是由于内存低,LMK策略强制杀应用导致。其实我们可以通过log去看看是否是因为内存低而导致的应用闪退。
首先打开kernel.log, 如果内存太低启用了LMK,会看到有killing的动作如下:
- 1
如果杀进程的adj比较低,比如adj<3, 那说明内存压力已经很大了,下面举例说明
问题是“用默认浏览器浏览网页,概率性闪退”
看kernel.log,发现browser被kill,log摘录如下:
- 1
- 2
- 3
从上面log可以看出,目前由于目前的cache是17564kB低于oom_score_adj 0的限制18432kB,所以lowmemorykiller杀掉了’android.browser’ 释放147456kB内存。
browser adj已经是0了还是被杀,内存压力相当大,从而会导致闪退问题。
由于目前此项目的内存是512配置,且查看系统的LMK配置也是没有优化空间了,基于整体效果考虑,不建议调整LMK策略。