安卓通过log查看应用是否是因为内存不足而闪退

好多应用闪退问题都是由于内存低,LMK策略强制杀应用导致。其实我们可以通过log去看看是否是因为内存低而导致的应用闪退。 
首先打开kernel.log, 如果内存太低启用了LMK,会看到有killing的动作如下:

“lowmemorykiller: Killing 'app_name' (PID), adj **"
  • 1

如果杀进程的adj比较低,比如adj<3, 那说明内存压力已经很大了,下面举例说明 
问题是“用默认浏览器浏览网页,概率性闪退” 
看kernel.log,发现browser被kill,log摘录如下:

02-01 17:23:57.685 <6>[ 2436.189758] c2 lowmemorykiller: Killing 'android.browser' (5610), adj 0, 
02-01 17:23:57.685 <6>[ 2436.189758] c2    to free 147456kB on behalf of 'android.browser' (5610) because 
02-01 17:23:57.685 <6>[ 2436.189758] c2    cache 17564kB is below limit 18432kB for oom_score_adj 0
  • 1
  • 2
  • 3

从上面log可以看出,目前由于目前的cache是17564kB低于oom_score_adj 0的限制18432kB,所以lowmemorykiller杀掉了’android.browser’ 释放147456kB内存。 
browser adj已经是0了还是被杀,内存压力相当大,从而会导致闪退问题。 
由于目前此项目的内存是512配置,且查看系统的LMK配置也是没有优化空间了,基于整体效果考虑,不建议调整LMK策略。

猜你喜欢

转载自blog.csdn.net/ChengTong007/article/details/79089331
今日推荐