linux 下面查看內(nèi)存有多種渠道,比如通過命令 ps ,top,free, pmap 等,或者通過/proc系統(tǒng)。一般情況下,ps,top,pmap,free可以滿足要求,如果需要比較詳細(xì)和精確地知道整機(jī)內(nèi)存或者某個(gè)進(jìn)程內(nèi)存的使用情況,可以通過/proc 系統(tǒng)。
使用命令
free?: 顯示系統(tǒng)可用內(nèi)存以及已經(jīng)使用的內(nèi)存的信息
ps:?查看進(jìn)程信息,靜態(tài),即當(dāng)前狀態(tài)
top:?查看進(jìn)程信息,動態(tài)
pstree:?查看進(jìn)程樹
pmap:?根據(jù)進(jìn)程ID查看進(jìn)程信息
ps命令–提供系統(tǒng)過去信息的一次性快照,也就是說ps命令能夠查看剛剛系統(tǒng)的進(jìn)程信息。
top命令反應(yīng)的是系統(tǒng)進(jìn)程動態(tài)信息,默認(rèn)10s更新一次。
ps和top都是從/proc目錄下讀取進(jìn)程的狀態(tài)信息,內(nèi)核把當(dāng)前系統(tǒng)進(jìn)程的各種有用信息都放在這個(gè)偽目錄下。
VSZ & VIRT
進(jìn)程使用的虛擬內(nèi)存值總量,包括所有代碼,數(shù)據(jù),共享庫已經(jīng)被swapped out的。VIRT = SWAP + RES。
VSZ來自ps命令, VIRT來自top命令,二者均表示進(jìn)程占用的虛擬內(nèi)存大小。
假如進(jìn)程申請100m的內(nèi)存,但實(shí)際只使用了10m,那么它會增長100m,而不是實(shí)際的使用量
RES & RSS
進(jìn)程當(dāng)前使用的內(nèi)存大小,但不包括swap out. RES = CODE +DATA。
包含其他進(jìn)程的共享
RES 來自?top?命令, RSS 來自?ps?命令,兩者在表示意義上沒有區(qū)別,都是從?/cat/proc/[pid]/stat?文件中讀取的信息。
ps -o comm,rss 獲取說有進(jìn)程的rss占用大小
如果申請100m的內(nèi)存,實(shí)際使用10m,它只增長10m,與VIRT相反
關(guān)于庫占用內(nèi)存的情況,它只統(tǒng)計(jì)加載的庫文件所占內(nèi)存大小
CODE
可執(zhí)行代碼占用的物理內(nèi)存大小
DATA
物理內(nèi)存中存放數(shù)據(jù)的大小,在程序運(yùn)行中需要用到
如果top命令沒有顯示, 按f鍵顯示
SHR
共享內(nèi)存大小
除了自身進(jìn)程的共享內(nèi)存,也包含其他進(jìn)程的共享內(nèi)存
計(jì)算某個(gè)進(jìn)程所占用物理內(nèi)存的大小: RES - SHR
swap out后,該值會下降