android ANR实例分析

来源:互联网 发布:木地板性价比 知乎 编辑:程序博客网 时间:2024/05/16 10:06

一.实例

// NOT RESPONDING: com.android.settings (pid 5255)
ANR in com.android.settings (com.android.settings/.SubSettings), time=11135301
Reason: Input dispatching timed out (Waiting because no window has focus but there is a focused application that may eventually add a window when it finishes starting up.)
Load: 20.36 / 20.61 / 19.86
Android time :[2017-11-15 23:21:17.69] [11146.916]
CPU usage from 285704ms to 0ms ago (2017-11-15 23:16:20.372 to 2017-11-15 23:21:06.077) with 99% awake:

分析

(1)NOT RESPONDING: com.android.settings (pid 5255)

   设置模块无反应 PID 5255
(2)38% TOTAL: 24% user + 13% kernel + 0% iowait + 0% softirq

    CPU运行正常,说明主线程被BLOCK了,导致的模块无反应


(3)"main" prio=5 tid=1 WaitingPerformingGc

   com.android.settings等待GC


(4)
Total number of allocations 183578333
Total bytes allocated 10GB
Total bytes freed 10GB
Free memory 2184B
Free memory until GC 2184B
Free memory until OOME 2184B
Total memory 192MB
Max memory 192MB

距离发生OOM还有 2184B,说明有内存泄漏,或内存使用不合理
内存对象18357万个,GC过程需要扫描这些对象的巨大部分,导致耗时很久