jmap可以查看Java程序的堆內(nèi)存使用情況,pmap可以查看Linux上運行的進程的內(nèi)存使用情況。
查看Linux上運行的進程的內(nèi)存使用情況,可以使用jmap,top,ps命令。
top命令本身也比較的耗資源,系統(tǒng)負載較大時不建議使用。
ps命令的使用linux命令大全,可以如下:
ps -aux | grep init
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1584 536 ? S s 10:43 0:00 init [3]
其中RSS 就是這個process 實際占用的物理內(nèi)存,VSZ 就是process 的虛擬內(nèi)存,就是process 現(xiàn)在沒有使用但未來可能會分配的內(nèi)存大小。
ps 出來的結(jié)果,是有點不正確的,如果把所有程序的 RSS 加起來,恐怕比你的實際內(nèi)存還要大呢。為什么呢??因為 ps 的結(jié)果,RSS 那部分,是包括共享內(nèi)存的。
linux 會把一些shared libraries 載入到內(nèi)存中,在pmap 的輸出中,這些shared libraries 的名字通常是 lib*.so 。如 libX11.so.6.2.0 。這個 libX11.so.6.2.0 會被很多process load 到自己的運行環(huán)境中,同時,ps 輸出的RSS 結(jié)果中,每個process 都包含了這個libX11.so.6.2.0 ,而事實上它只被load 了一次,如果單純把ps 的結(jié)果相加,這樣就重復(fù)計算了。
使用pmap可以看到進程實際使用的內(nèi)存。
$ pmap -d 1980 1980: /usr/bin/yakuake Address Kbytes Mode Offset Device Mapping 00110000 2524 r-x-- 0000000000000000 008:00002 libkio.so.5.3.0 00387000 4 ----- 0000000000277000 008:00002 libkio.so.5.3.0 00388000 32 r---- 0000000000277000 008:00002 libkio.so.5.3.0 00390000 16 rw--- 000000000027f000 008:00002 libkio.so.5.3.0 00394000 444 r-x-- 0000000000000000 008:00002 libQtDBus.so.4.5.2 00403000 4 ----- 000000000006f000 008:00002 libQtDBus.so.4.5.2 00404000 4 r---- 000000000006f000 008:00002 libQtDBus.so.4.5.2 00405000 4 rw--- 0000000000070000 008:00002 libQtDBus.so.4.5.2 00407000 228 r-x-- 0000000000000000 008:00002 libkparts.so.4.3.0 00440000 8 r---- 0000000000039000 008:00002 libkparts.so.4.3.0 00442000 4 rw--- 000000000003b000 008:00002 libkparts.so.4.3.0 00443000 3552 r-x-- 0000000000000000 008:00002 libkdeui.so.5.3.0 007bb000 76 r---- 0000000000377000 008:00002 libkdeui.so.5.3.0 007ce000 24 rw--- 000000000038a000 008:00002 libkdeui.so.5.3.0 007d4000 4 rw--- 0000000000000000 000:00000 [ anon ] .... mapped: 180472K writeable/private: 19208K shared: 20544K
上一個教程:Linux Centos6下常用查詢命令大全
下一個教程:linux命令大全, nginx,異常處理