一、概述
Systrace是安卓4.1中新增的数据采样和分析工具。谷歌通过在源码的关键函数中这是trace(也就是标记),然后通过这些标记就可以分析出安卓系统代码的运行情况。
Systrace的功能包括跟踪系统的I/O操作、内核工作队列、CPU负载以及Android各个子系统的运行状况。
Systrace经常被用来分析安卓系统和app的性能。
二、使用方法
2.1 使用Android SDK中Android Device Monitor
在Android SDK的安装目录 Android\Sdk\tools中打开monitor,弹出window后点击右上角的DDMS,然后选择手机,点击按钮开始抓取,如下图所示。
然后会弹出一个对话框,选择要抓取的信息,要抓取的时间,缓存大小。如下图所示。
image.png
最后点击OK开始抓取trace。这时我们就可以在手机上复现出现问题的情况,比如APP冷启动卡顿,滑动List丢帧等问题。
2.2 使用python脚本抓trace
这需要安装python环境,然后使用python命令抓取trace。这个我就不详细说了。
三、分析trace
3.1查看生成的网页
抓取完成后会生成一个html网页,这个网页必须用谷歌浏览器打开。打开以后如下图所示。
image.png
在生成的网页中我们可以看到很多信息,比如CPU在某个时间片内执行了哪个函数,某个进程的每个线程的执行情况, 每个函数的耗时,线程状态的切换等。
3.2快捷键的使用
我们可以使用一些快捷键来帮助我们分析。
A:左移
D:右移
W:放大
S: 缩小
M:选定时间区间
3.3 案例分析
下面我们来分析一个应用的冷启动。
工具的使用方法上面已经说的比较清除了:先打开DDMS,然后点击选择抓取的信息,开始抓取。操作手机,最终完成抓取。
我们知道,启动一个应用的流程:Lancher与AMS通信,AMS检查是否存在对应进程;如果对应进程还没启动,通过socket与Zygote通信,Zygote孵化出来新进程;新进程中ActivityThread的main方法执行,加载资源,启动looper等,最后渲染出帧,完成应用的启动。
那么我们从抓取的trace中分析流程是不是这样的。
3.3.1 桌面应用请求打开应用
小米手机中桌面APP的名字是com.miui.home。点击启动应用icon,桌面应用就会与AMS通信,请求打开新的应用。
3.3.2 AMS
AMS检查目标进程还没有启动,与Zogote通信,请求Zygote孵化新进程。
image.png
3.3.3 新进程
新进程启动,初始化,加载资源,渲染帧。
image.png
3.3.4 应用启动时间
image.png从上图我们可以看出从新进程启动到渲染出第一个有效帧,共花费了730ms,低于安卓绿色联盟规定的应用冷启动1m的规定。
四、总结
不论是系统性能优化,还是app性能优化,systrace都是一个很有用的工具。看懂systrace,需要了解安卓系统源码,操作系统,多线程等知识,对于我们的开发有很大的帮助。
网友评论