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


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
-----------------------------------------------------------------

上述数据以4kb,8,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
--------|---------------------------------------------------|--------


Android 应用剩余内存获取 安卓剩余内存_ADB


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

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 S gpu_dfs
root      75   2     0      0    c458321c 00000000 S mali-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连接。

Android 应用剩余内存获取 安卓剩余内存_ADB_02