Systrace 分析问题技巧

73 阅读1分钟

Systrace 分析问题技巧

Systrace 中进程三种状态解读 Systrace 中,进程的任务最常见的有三种状态:Sleep、Running、Runnable。 在优化的过程中,这几个状态需要我们重点关注:

绿色:Running 蓝色:Runnable 白色:Sleep

如何分析 Sleep 状态的 Task

一般白色的 Sleep 有两种,即应用主动 Sleep 和被动 Sleep:

  1. nativePoll 这种,一般属于主动 Sleep,因为没有消息处理了,所以进入 Sleep 状态等待 Message,这种一般是正常的,我们不需要去关注。比如两帧之间的那段,就是主动 sleep 的。

  2. 被动 Sleep 一般是由用户主动调用 sleep,或者用 Binder 与其他进程进行通信,这个是我们最常见的,也是分析性能问题的时候经常会遇到的,需要重点关注。

如下图,这种在启动过程中,有较长时间的 sleep 情况,一般下面就可以看到是否在进行 Binder 通信,如果在启动过程中有频繁的 Binder 通信,那么应用等待的时间就会变长,导致响应时间变慢。

image.png

这种一般可以点击这个 Task 最下面的 binder transaction 来查看 Binder 调用信息,比如

image.png

有时候没有 Binder 信息,是被其他的等待的线程唤醒,那么可以查看唤醒信息,也可以找到应用是在等待什么

image.png