tops和dumpsys

top命令详解

基本使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
D:\Program Files (x86)\Android\android-sdk\platform-tools>adb -s 7PR4C19912015805 shell top --help
usage: top [-Hbq] [-k FIELD,] [-o FIELD,] [-s SORT] [-n NUMBER] [-m LINES] [-d SECONDS] [-p PID,] [-u USER,]

Show process activity in real time.

-H Show threads
-k Fallback sort FIELDS (default -S,-%CPU,-ETIME,-PID)
-o Show FIELDS (def PID,USER,PR,NI,VIRT,RES,SHR,S,%CPU,%MEM,TIME+,CMDLINE)
-O Add FIELDS (replacing PR,NI,VIRT,RES,SHR,S from default)
-s Sort by field number (1-X, default 9)
-b Batch mode (no tty)
-d Delay SECONDS between each cycle (default 3)
-m Maximum number of tasks to show
-n Exit after NUMBER iterations
-p Show these PIDs
-u Show these USERs
-q Quiet (no header lines)

Cursor LEFT/RIGHT to change sort, UP/DOWN move list, space to force
update, R to reverse sort, Q to exit.

结合findstr(windows用findstr,linux用grep)使用,其中-s 7PR4C19912015805指定设备名

1
2
3
4
5
adb -s 7PR4C19912015805 shell top  -d 1
//结合findstr或者grep使用,注意有些包名太长系统不会显示全名,此时搜索全名包名可能搜不到,建议搜索部分包名
adb -s 7PR4C19912015805 shell top -d 1 | findstr com.XXX.XXX
//把top输出保存到adb工具的当前目录下1257.txt文件
adb -s 7PR4C19912015805 shell "top -d 1|grep com.XXX.XXX" >1257.txt

top重要参数含义

**VIRT:virtual memory usage 虚拟内存
**1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等。VIRT=SWAP(交换内存)+RES

2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小

SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来

参考连接:

https://javawind.net/p131

https://www.cnblogs.com/flyingcode/p/13690223.html

dumpsys meminfo详解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
adb shell dumpsys meminfo [pkg/pid]
D:\Program Files (x86)\Android\android-sdk\platform-tools>adb -s 7PR4C19912015805 shell dumpsys meminfo -h
meminfo dump options: [-a] [-d] [-c] [-s] [--oom] [process]
-a: include all available information for each process.
-d: include dalvik details.
-c: dump in a compact machine-parseable representation.
-s: dump only summary of application memory usage.
-S: dump also SwapPss.
--oom: only show processes organized by oom adj.
--local: only collect details locally, don't call process.
--package: interpret process arg as package, dumping all
processes that have loaded that package.
--checkin: dump data for a checkin
--proto: dump data to proto
If [process] is specified it can be the name or
pid of a specific process to dump.

其他常用服务信息查询

  • 内存 adb shell dumpsys meminfo

  • CPU adb shell dumpsys cpuinfo

  • 帧率 adb shell dumpsys gfxinfo

  • 显示 adb shell dumpsys display

  • 电源 adb shell dumpsys power

  • 电池状态 adb shell dumpsys batterystats

  • 电池 adb shell dumpsys battery

  • 闹钟 adb shell dumpsys alarm

  • 位置 adb shell dumpsys location

Uptime

表示启动到现在的时长,不包含休眠的时间,单位毫秒(ms)

Realtime

表示启动到现在的时长,包含休眠的时间,单位毫秒(ms)

Native Heap

指c 中malloc出来的堆空间

扩展:c++申请的内存为native process,java申请的内存:java process

Dalvik Heap

指java中new出来的java堆空间

只是占用的虚拟内存的空间

Pss Total

指占用了真实的物理内存的空间

private dirty

指私有驻留内存

扩展:进程内存空间是虚拟内存,区分于物理内存,进程无法直接操作物理内存RAM。必要时,操作系统对其进行映射,使进程能应用到物理内存

Heap Size

指占用总内存(Heap 堆)

Heap Alloc

指在虚拟地址中分配了这么多空间

Heap Free

空闲内存

参考连接:

https://www.cnblogs.com/hzcya1995/p/13309149.html

查看包名方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//方式一,可以用FILTER去搜索
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
参数 显示列表
无 所有应用
-f 显示应用关联的 apk 文件
-d 只显示 disabled 的应用
-e 只显示 enabled 的应用
-s 只显示系统应用
-3 只显示第三方应用
-i 显示应用的 installer
-u 包含已卸载应用
<FILTER> 包名包含 <FILTER> 字符串
adb -s 7PR4C19912015805 shell pm list packages weixin
//方式二,直接查看活动的应用占用资源情况
adb -s 7PR4C19912015805 shell top -d 1

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!