Android稳定性问题分析时获取手机状态的ADB命令

来源:互联网 发布:招聘java程序员 编辑:程序博客网 时间:2024/06/04 19:40

一,查询手机总共内存以及剩余内存

1.使用adbshell命令进入手机的shell模式

2.cat proc/meminfo

3.显示结果:

-------------------------------------------

MemTotal:    2052440kB    //总内存

MemFree:     50004kB        //空闲内存

Cached:         436412kB       //高速缓冲存储器使用的大小

----------------------------------------------

所以我们统计的系统剩余内存为MemFree+ Cached

一般低于20M的话,就属于内存较低的情况了。


二,查看各个进程的内存信息


1.使用adbshell命令进入手机的shell模式

2.procrank

3.显示结果:

-----------------------------------------------

 PID      Vss     Rss     Pss     Uss cmdline

 262   53828K   49888K  21094K   18688K system_server

 7244  57936K   48604K   20153K  17948K com.medicaltreatment

 1247  53108K   48972K   19730K  17040K com.tencent.mobileqq

-----------------------------------------------

VSS是单个进程全部可访问的地址空间。其大小包括可能还尚未在内存中驻留的部分。比如地址空间已经被malloc分配,但是还没有实际写入。对于确定单个进程实际内存使用大小, VSS用处不大。

RSS  是单个进程实际占用的内存大小RSS易被误导的原因在于,它包括了该进程所使用的所有共享库的全部内存大小。对于单个共享库,尽管无论多少个进程使用,实际该共享库只会被装入内存一次。对于单个进程的内存使用大小,RSS 不是一个精确的描述。

PSS 不同于RSS,它只是按比例包含其所使用的共享库大小。例如, 三个进程使用同一个占用 30 内存页的共享库。对于三个进程中的任何一个,PSS将只包括10个内存页。PSS是一个非常有用的数字,因为系统中全部进程以整体的方式被统计,对于系统中的整体内存使用是一个很好的描述。如果一个进程被终止, 其PSS中所使用的共享库大小将会重新按比例分配给剩下的仍在运行并且仍在使用该共享库的进程。

USS 是单个进程的全部私有内存大小。亦即全部被该进程独占的内存大小。USS是一个非常非常有用的数字,因为它揭示了运行一个特定进程的真实的内存增量大小。如果进程被终止,USS就是实际被返还给系统的内存大小。USS是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。


三,查看系统内存碎片情况

1.使用adbshell命令进入手机的shell模式

2.cat proc/buddyinfo

3.显示结果:

-----------------------------------------------------------------

Normal   4021  1008    197     38    20      2      0     0      0      0     0

-----------------------------------------------------------------

上述数据以4kb8,16,32,64,128,256,512,1024,2048,4096kb为单位的所有可分配内存之和,如果出现如下数据,则极有可能出现内存碎片严重的情况。

-----------------------------------------------------------------

Normal   5890  1    0     0    0      0      0     0      0      0     0

----------------------------------------------------------------


四,查看系统整体状态

1.使用adbshell命令进入手机的shell模式

2.vmstat

3.显示结果:

--------|---------------------------------------------------|--------

procs |            memory               system               |                 cpu             

 r b     | free mapped   anon  slab    in  cs flt     |  us   ni   sy   id     wa  ir

 0 0    | 6396  32552 237620 18880   448  202 |  0     0    0    099   0     0

 1 0    | 6396  32552 237620 18880   409  134 |  0     0    0    299   3     0

 1 0    | 6396  32552 237620 18880   439  200 |  0     0    0    199   0     0

--------|---------------------------------------------------|--------



五,查询当前系统所有的进程

1.使用adbshell命令进入手机的shell模式

2.ps

3.显示结果:

-------------------------------------------------

root      68   2     0      0    c469a460 00000000 S jbd2/mmcblk0p13

root      69   2     0      0    c458321c 00000000 S ext4-dio-unwrit

root      70   2     0      0    c469a460 00000000 S jbd2/mmcblk0p14

root      71   2     0      0    c458321c 00000000 S ext4-dio-unwrit

root      72   2     0      0    c469a460 00000000 S jbd2/mmcblk0p10

root      73   2     0      0    c458321c 00000000 S ext4-dio-unwrit

root      74   2     0      0    c458321c 00000000 Sgpu_dfs

root      75   2     0      0    c458321c 00000000 Smali-pmm-wq

--------------------------------------------------


六,查看当前CPU占有率

1.使用adbshell命令进入手机的shell模式

2.top –m 10 //显示CPU占用率前10位的进程

3.显示结果:

------------------------------------------------------------

User 0%, System 2%, IOW 0%, IRQ 0%

User 2 + Nice 0 + Sys 14 + Idle 613+ IOW 0 + IRQ 0 + SIRQ 0 = 629

 

 PID PR CPU% S  #THR     VSS    RSS PCY UID      Name

11259  0   2%R     1  1052K    440K fg root     top

 333  0   0% S   22 304576K  37928K fg system  com.android.systemui

  84  0   0% S   14  62996K   5324K fgsystem   /system/bin/surfaceflinger

10942  1   0%S     5  4528K    244K fg shell    /sbin/adbd

  55  1   0% R    1      0K     0K fgroot    mmcqd/0

 1247 1   0% S    32 334624K 48784K fgapp_51  com.tencent.mobileqq

  12  1   0% S    1      0K     0K fgroot    fs_sync

  13  0   0% S    1      0K     0K fgroot    sync_supers

  14  0   0% S    1      0K     0K fgroot    bdi-default

  15  1   0% S    1      0K     0K fgroot    kblockd

------------------------------------------------------------


七,查看ROM使用情况

1.使用adbshell命令进入手机的shell模式

2.df

3.显示结果:

------------------------------------------------------------

Filesystem             Size   Used  Free  Blksize

/dev                   211M    76K  211M   4096

/mnt/asec              211M     0K  211M   4096

/mnt/obb               211M     0K  211M   4096

/system                281M   207M   73M   4096

/data                    1G   577M    1G   4096

/cache                 140M     4M  136M   4096

/productinfo             4M    4M  856K   4096

/mnt/internal          998M  428M   569M   4096

------------------------------------------------------------

如果data分区的Free数值过小,就会弹出ROM警告。我们可以使用下面的命令

来寻找是否有过大文件导致data分区剩余空间不足。

1.使用adbshell命令进入手机的shell模式

2.cd data –>进入data目录

3. busybox find . -type f -size +500k –>查找大于500K的文件。


当手机出现稳定性性能问题的时候,我们就可以参照下面的图,运用上面的命令查看手机情况。不过有点注意的是,上面命令都必须持有问题手机进行adb连接。


0 0