/proc/status 里面的內存字段含義


在Linux下面,查看一個進程的內存使用我們可以下面的命令來實現,只需把其中的[pid]換成進程實際的pid。

cat /proc/[pid]/status

為了方便,我們把查找pid和看內存整合成一條命令,后面這將是我們唯一的測試工具。

cat /proc/`ps -ef|grep hello | grep -v grep | awk '{print $2}'`/status | grep -E 'VmSize|VmRSS|VmData|VmStk|VmExe|VmLib'

在這里我們關注VmSize|VmRSS|VmData|VmStk|VmExe|VmLib 這個6個指標,下面有一些簡單的解釋。

VmSize:

虛擬內存大小。

整個進程使用虛擬內存大小,是VmLib, VmExe, VmData, 和 VmStk的總和。

占所有虛擬內存分配(文件映射,共享內存,堆內存,任何內存)的份額,並且幾乎在每次分配新內存時都會增長。幾乎,因為如果在數據段中用新的堆內存分配代替了釋放的舊分配,則不會分配新的虛擬內存。每當釋放虛擬分配時,它都會減少。VmPeak跟蹤的最大值VmSize-只能隨時間增加。

VmLck:

虛擬內存鎖。

進程當前使用的並且加鎖的虛擬內存總數

VmRSS:

虛擬內存駐留集合大小。

這是駐留在物理內存的一部分。它沒有交換到硬盤。它包括代碼,數據和棧。

隨着訪問內存的增加而增加,隨着將頁面調出到交換設備的次數減少。

VmData:

虛擬內存數據。

堆使用的虛擬內存。

隨着使用堆的數據段部分而增長。由於當前的堆分配器會保留釋放的內存,以防將來的分配需要它,它幾乎永遠不會收縮。

VmStk:

虛擬內存棧

棧使用的虛擬內存

VmExe:

可執行的虛擬內存

可執行的和靜態鏈接庫所使用的虛擬內存

VmLib:

虛擬內存庫

動態鏈接庫所使用的虛擬內存

 

VmPeak:

表示進程所占用最大虛擬內存大小 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM