在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行數據。(其中的|表示管道操作)