Systrace 分析问题技巧
Systrace 中进程三种状态解读 Systrace 中,进程的任务最常见的有三种状态:Sleep、Running、Runnable。 在优化的过程中,这几个状态需要我们重点关注:
绿色:Running 蓝色:Runnable 白色:Sleep
如何分析 Sleep 状态的 Task
一般白色的 Sleep 有两种,即应用主动 Sleep 和被动 Sleep:
-
nativePoll 这种,一般属于主动 Sleep,因为没有消息处理了,所以进入 Sleep 状态等待 Message,这种一般是正常的,我们不需要去关注。比如两帧之间的那段,就是主动 sleep 的。
-
被动 Sleep 一般是由用户主动调用 sleep,或者用 Binder 与其他进程进行通信,这个是我们最常见的,也是分析性能问题的时候经常会遇到的,需要重点关注。
如下图,这种在启动过程中,有较长时间的 sleep 情况,一般下面就可以看到是否在进行 Binder 通信,如果在启动过程中有频繁的 Binder 通信,那么应用等待的时间就会变长,导致响应时间变慢。
这种一般可以点击这个 Task 最下面的 binder transaction 来查看 Binder 调用信息,比如
有时候没有 Binder 信息,是被其他的等待的线程唤醒,那么可以查看唤醒信息,也可以找到应用是在等待什么