目录
一、应用启动耗时自测
adb shell am start -W 包名/类名
1)TotalTime:自己的所有Activity的启动耗时。
2)WaitTime:应用进程的创建过程 + TotalTime。
冷启动一般参考TotalTime。
二、帧率查看
adb shell "dumpsys SurfaceFlinger --dispsync |grep mPeriod
目前系统状态是60帧 ,暂无掉帧状态。
三、Top命令查看系统资源占用
- adb shell 进入设备;
- 输入 top 即可实时刷新系统资源占用情况,如下图。
3.1 第一行:任务(进程)
- 537 total:系统现在共有537个进程
- 1 running:有1个运行中的
- 501 sleeping:有501个休眠的
- 0 stopped:有0个stoped状态的
- 2 zombie:有2个zombie(僵尸)状态的
3.2 第二行:mem状态
- 3805444k total:物理内存总量
- 3701864k used:使用中的内存总量
- 103580k free:空闲内存总量
- 1936k buffers:缓存的内存量
3.3 第三行:swap交换分区
- 2293756k total:交换区总量
- 308136k used:使用的交换区总量
- 1985620k free:空闲交换区总量
- 2097388k cached: 缓冲的交换区总量
可用内存数 = Mem的free + Mem的buffers + Swap的cached
所以此台Android设备可用内存数 = 103580k + 1936k + 2097388k= 2,202,904k(约2.2G)
3.4 第四行:cpu状态
- 800%cpu : CPU总量
- 10%user: 用户空间占用CPU的百分比
- 0%nice: 改变过优先级的进程占用CPU的百分比
- 13%sys: 内核空间占用CPU的百分比
- 777%idle : 空闲CPU百分比
- 0%iow : IO等待占用CPU的百分比
- 0%irq: 硬中断(Hardware IRQ)占用CPU的百分比
- 0%sirq : 软中断(Software Interrupts)占用CPU的百分比
3.5 第五行:标题
PID USER PR NI VIRT RES SHR S[%CPU] %MEM TIME+ ARGS
- PID: 进程id
- USER: 进程所有者
- PR: 进程优先级
- NI: nice值。负值表示高优先级,正值表示低优先级
- VIRT: 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
- RES: 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
- SHR: 共享内存大小,单位kb
- S: 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
- %CPU: 上次更新到现在的CPU时间占用百分比
- %MEM: 进程使用的物理内存百分比
- TIME+: 进程使用的CPU时间总计,单位1/100秒
- ARGS: 进程名
四、抓取trace.html文件分析
4.1 使用Android Monitor工具
Monitor工具目录一般在SDK目录的SDK\tools\monitor,基本很少用,Monitor也存在一些兼容问题。
4.2 使用adb shell atrace命令
adb shell "atrace gfx input view wm am sched load idle freq -b 20480 -t 5" > path
生成的为文本文档,还需要使用systrace.py命令转换为.html:systrace.py --from-file=path。
4.3 使用systrace.py命令
systrace.py脚本相当于整合了atrace命令,电脑需要配置python运行环境,systrace.py路径在SDK目录的\platform-tools\systrace\systrace.py。
具体步骤:
- 连接设备并adb root;
- 切换到system.py文件路径下:cd C:\My Program Files\Android SDK\platform-tools\systrace;
- 执行命令,生成html文件:python systrace.py -t 10 gfx input view wm am res rs sched freq idle dalvik -o D:\test\trace.html;
- 直接在google浏览器中打开html即可。(如无法打开trace文件,可尝试如下操作:在chrome地址栏中输入”chrome:tracing”,然后点击load按钮load你的trace.html文件。)
五、抓取log分析
5.1 设置日志缓冲大小
adb shell logcat -g setprop persist.logd.size 4M
5.2 打印crash日志
adb shell logcat -b crash
5.3 打印常规日志
adb shell logcat > C:\Users\tianbinbin\Desktop\log.txt
5.4 打印内核日志
adb shell cat /proc/kmsg > C:\Users\tianbinbin\Desktop\kernel.log
5.5 打印非内核log
adb logcat -b main -b system -b radio -b events -v time > C:\Users\tianbinbin\Desktop\all_user.log
5.6 打印bugreport
adb bugreport
5.7 打印服务
adb shell service list packages |grep Notification
5.8 打印surfaceFlinger
adb shell dumpsys SurfaceFlinger > C:\Users\tianbinbin\Desktop\111.txt
5.9 打印window
adb shell dumpsys window > C:\Users\tianbinbin\Desktop\222.txt
目录