在linux下通常通过free命令查看当前的内存消耗情况
例如:
admin@k5:/data/user/3798c # free
total used free shared buffers
Mem: 1827576 1215184 612392 1584 11732
-/+ buffers: 1203452 624124
Swap: 0 0 0
但当想要知道对用的内存被哪些进程使用了?而哪些进程使用最多?
可以使用ps命令,再加上对应的过滤来实现。
首先解释对应的ps每一行对应的意义:
admin@k5:/data/user/3798c # ps -aux | head -1
USER PID PPID VSIZE RSS WCHAN PC NAME
所有者 进程ID 父进程ID 虚拟内存 物理内存 / pc指针 进程名
使用ps命令查看当前消耗物理内存最多的前几个进程:
admin@k5:/data/user/3798c # ps aux|head -1;ps|grep -v PID|sort -rn -k 5|head
USER PID PPID VSIZE RSS WCHAN PC NAME
root 1815 1 209020 759012 ffffffff b6de77cc S /system/bin/bootanimation
system 1998 1541 1063884 97780 ffffffff b6dcab60 S system_server
u0_a10 2160 1541 986848 89392 ffffffff b6dcab60 S com.android.systemui
u0_a45 2366 1541 986084 77296 ffffffff b6dcab60 S com.android.launcher
root 1541 1 940236 75516 ffffffff b6dcb0c0 S zygote
radio 2333 1541 964964 60672 ffffffff b6dcab60 S com.android.phone
u0_a22 2747 1541 968344 54216 ffffffff b6dcab60 S com.android.email
u0_a4 2124 1541 956236 50644 ffffffff b6dcab60 S android.process.media
system 2670 1541 970640 46924 ffffffff b6dcab60 S com.android.settings
u0_a19 2724 1541 954600 46408 ffffffff b6dcab60 S com.android.deskclock
其中第一句主要是为了获取标题(USER PID PPID VSIZE RSS WCHAN PC NAME)。
接下来的grep -v PID是将ps aux命令得到的标题去掉,即grep不包含PID这三个字母组合的行,再将其中结果使用sort排序。
sort -rn -k 5该命令中的-rn的r表示是结果倒序排列,n为以数值大小排序,而-k 5则是针对第5列的内容进行排序(第五行表示当前进程使用的物理内存),再使用head命令获取默认前10行数据。(其中的|表示管道操作)