Android查看每个线程CPU占用情况,以及工作内容分析

2018-01-13 11:05:42来源:网络收集作者:纳米程序员人点击

分享

阿里云爆款
简介

在使用Android Studio开发的时候,有时候会发现手机CPU使用特别高,但是又不确定哪个线程占用高。除了能够使用android profiler查看外,还可以使用命令来查看。


命令
adb shell top

使用参数:


Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ]
-m numMaximum number of processes to display. 最多显示几个进程,top会自动进行排序,比如让CPU占用率高的进程在前
-n numUpdates to show before exiting. 刷新次数
-d numSeconds to wait between updates. 刷新间隔,可以输入小数即代表毫秒级间隔
-s colColumn to sort by (cpu,vss,rss,thr). 选择以哪一项进行排序
-tShow threads instead of processes. 显示线程
-hDisplay this help screen.

下面是adb shell top -m 10 -t -d 2命令打印


User 62%, System 27%, IOW 0%, IRQ 4%
User 623 + Nice 15 + Sys 286 + Idle 57 + IOW 0 + IRQ 33 + SIRQ 8 = 1022
PID TID USER PRNI CPU% S VSS RSS PCY Thread Proc
40149996 u0_a28020 018% R 2524268K 319356Kta Thread-61com.xxxxxx
40144369 u0_a28020 0 7% R 2524268K 319356Kta xxxxxxxxxxxxxxx com.xxxxxx
4014 10067 u0_a28012-8 5% R 2524268K 318748Kta xxxxxxxxxxxxxxx com.xxxxxx
11621620 system 20 0 3% S 2515560K 274232Kfg Binder:1162_3 system_server
11622274 system 20 0 3% S 2515560K 274232Kfg Binder:1162_8 system_server
40144136 u0_a28010 -10 2% S 2524268K 319356Kta RenderThreadcom.xxxxxx
98659865 shell20 0 2% R 9108K 3112Kfg toptop
40144064 u0_a28021 1 2% S 2524268K 319356Kta xxxxxxxxxxxxxxx com.xxxxxx
40144014 u0_a28016-4 2% S 2523236K 319092Kta xxxxxxxxxxxxxxx com.xxxxxx
11622384 system 20 0 2% S 2515560K 274232Kfg Binder:1162_A system_server

各列含义


PID:略
PR:在android N之前代表运行在哪个核上,在android N上代表优先级,当然可能设备厂商会进行自定义
CPU%:略
S:运行状态
#THR:线程数
VSS:Virtual Set Size虚拟耗用内存(包含共享库占用的内存)
RSS:Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PCY:调度策略优先级,SP_BACKGROUND/SP_FOREGROUND
UID:进程所有者的用户id
Thread:线程名称
Name:进程名

可以看出,CPU占用最高的是前两个,其中com.xxxxxx是我自己的应用包名。从Thread那一列可以看出Thread的名称。


查看线程工作

知道了具体哪个线程占用CPU高之后,再使用Android Studio的android profiler开启method record。导出结果后查看线程方法调用即可。
Android查看每个线程CPU占用情况,以及工作内容分析


参考:花式读取Android CPU使用率


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台