目录
一、应用启动耗时自测
二、帧率查看
三、Top命令查看系统资源占用
3.1 第一行:任务(进程)
3.2 第二行:mem状态
3.3 第三行:swap交换分区
3.4 第四行:cpu状态
3.5 第五行:标题
四、抓取trace.html文件分析
4.1 使用Android Monitor工具
4.2 使用adb shell atrace命令
4.3 使用systrace.py命令
五、抓取log分析
5.1 设置日志缓冲大小
5.2 打印crash日志
5.3 打印常规日志
5.4 打印内核日志
5.5 打印非内核log
5.6 打印bugreport
5.7 打印服务
5.8 打印surfaceFlinger
5.9 打印window
一、应用启动耗时自测
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
目录
一、应用启动耗时自测
二、帧率查看
三、Top命令查看系统资源占用
3.1 第一行:任务(进程)
3.2 第二行:mem状态
3.3 第三行:swap交换分区
3.4 第四行:cpu状态
3.5 第五行:标题
四、抓取trace.html文件分析
4.1 使用Android Monitor工具
4.2 使用adb shell atrace命令
4.3 使用systrace.py命令
五、抓取log分析
5.1 设置日志缓冲大小
5.2 打印crash日志
5.3 打印常规日志
5.4 打印内核日志
5.5 打印非内核log
5.6 打印bugreport
5.7 打印服务
5.8 打印surfaceFlinger
5.9 打印window