卡顿总结

146 阅读1分钟

1.什么是卡顿

系统会定时刷新界面,若在该间隔时间内没有准备好内容(CPU + GPU),则发生掉帧,既是卡顿,也既是主线程做了耗时的操作。

大概有以下一些原因:

  • IO 操作
  • 主线程等待子线程的锁
  • 复杂的计算,如布局、文本、复杂的业务代码等
  • 当然还有很多奇怪的原因,CPU 繁忙、电量低、系统bug、XPC、渣渣机等

检测卡顿的办法: 1. 2. 3.

怎么算是一个卡顿: 主线程卡 3 秒认为是一次卡顿

如何 检测:ping 主线程

信息采 集:每0.3秒 采样主线程的堆栈信息,检测到卡 顿时聚合所有主线程堆栈 信息 + 当前所 有线程堆栈信息 + 埋点信 息

可以看到卡顿时埋点 会及时上报,但是卡顿文件并不是实时 上传的,首先间隔是 10min 检测是否需要上传,其次要累计到一定个数(各机型个数不同)的文 件才会上传,再有听说上传的成功率 比较低。所以后面会看 到 Grafana 统计的卡顿次数远远大于 灵雀上面搜集到的卡顿。 如果聚合 得比较好,那从关 键栈信息就能看出问题,如下,可以明显看出就是 在主线程做 IO 耗时操作 导致的卡顿