檢視程序記憶體使用情況

2021-05-23 09:29:18 字數 3242 閱讀 3806

ps命令是linux下常見的檢視程序狀況的程式,它有幾個字段可以用來檢視 程序記憶體使用情況:sz,rss,vsz。分別說明如下:

假如我要檢視程式a.out的記憶體使用情況,操作如下:

$ ./a.out &

[1] 10069 

$ ps -o sz,rsz,vsz

pid sz rss vsz s tty time command

6793 1545 3648 6180 s pts/2 00:00:00 /bin/bash

10069 404 304 1616 s pts/2 00:00:00 ./a.out

10070 626 876 2504 r pts/2 00:00:00 ps -o sz,rss,vsz

上面ps命令的輸出的第3行就是./a.out自行後的相關情況。我們可以看出,它的虛擬 記憶體大小為1616kb,當前占用的物理記憶體為304kb(其它資料在磁碟上或交換分割槽),虛 擬記憶體占用404個物理頁面。由於我的機器的物理頁面大小為4kb,可以驗證404 x 4kb等於1616kb。

ps命令的輸出關於記憶體的情況不是很詳細,尤其是程序所使用的記憶體中 有很大一部分是共享庫函式使用的,因此通過ps命令的輸出看不到程序自己使用了多 少記憶體。為了檢視更詳細的資訊,可以借助於/proc檔案系統。這個檔案系 統併存在於磁碟上,但是可以象操作其它普通檔案一樣操作它。它是linux提供給使用者 檢視程序相關資訊的介面。在/proc下有2個檔案和程序記憶體有 關:/proc//status和/proc//smaps。

通過/proc//status可以檢視程序的記憶體使用情況,包括虛擬內 存大小(vmsize),物理記憶體大小(vmrss),資料段大小(vmdata),棧的大小 (vmstk),**段的大小(vmexe),共享庫的**段大小(vmlib)等等。

$ cat /proc/10069/status

name: a.out

state: s (sleeping)

tgid: 10069

pid: 10069

ppid: 6793

tracerpid: 0

uid: 1001 1001 1001 1001

gid: 1001 1001 1001 1001

fdsize: 256

groups: 1000 1001

vmpeak: 1692 kb

vmsize: 1616 kb

vmlck: 0 kb

vmhwm: 304 kb

vmrss: 304 kb

vmdata: 28 kb

vmstk: 88 kb

vmexe: 4 kb

vmlib: 1464 kb

vmpte: 20 kb

threads: 1

sigq: 0/16382

sigpnd: 0000000000000000

shdpnd: 0000000000000000

sigblk: 0000000000000000

sigign: 0000000000000000

sigcgt: 0000000000000000

capinh: 0000000000000000

capeff: 0000000000000000

capbnd: ffffffffffffffff

cpus_allowed: f

cpus_allowed_list: 0-3

mems_allowed: 1

mems_allowed_list: 0

voluntary_ctxt_switches: 1

nonvoluntary_ctxt_switches: 1

注意,vmdata,vmstk,vmexe和vmlib之和並不等於vmsize。這是因為共享庫函式的數 據段沒有計算進去(vmdata僅包含a.out程式的資料段,不包括共享庫函式的資料段, 也不包括通過mmap對映的區域。vmlib僅包括共享庫的**段,不包括共享庫的資料 段)。

$ cat /proc/10069/smaps

00110000-00263000 r-xp 00000000 08:07 128311 /lib/tls/i686/cmov/libc-2.11.1.so

size: 1356 kb

rss: 148 kb

pss: 8 kb

shared_clean: 148 kb

shared_dirty: 0 kb

private_clean: 0 kb

private_dirty: 0 kb

referenced: 148 kb

swap: 0 kb

kernelpagesize: 4 kb

mmupagesize: 4 kb

......

......

bfd7f000-bfd94000 rw-p 00000000 00:00 0 [stack]

size: 88 kb

rss: 8 kb

pss: 8 kb

shared_clean: 0 kb

shared_dirty: 0 kb

private_clean: 0 kb

private_dirty: 8 kb

referenced: 8 kb

swap: 0 kb

kernelpagesize: 4 kb

mmupagesize: 4 kb

注意:rwxp中,p表示私有對映(採用copy-on-write技術)。 size欄位就是該區域的大小。

updated: 2011-03-04 17:11

檢視記憶體使用情況

查詢sqlserver總體的記憶體使用情況select type sum virtual memory reserved kb vm reserved sum virtual memory committed kb vm commited sum awe allocated kb awe alloc...

檢視linux程序記憶體的使用情況

要檢視linux記憶體的使用情況,使用free命令 加上 m選項是以m來表示的,不加是以k來表示的 img total 總計物理記憶體的大小。used 已使用多大。free 可用有多少。shared 多個程序共享的記憶體總額。buffers cached 磁碟快取的大小。第三行 buffers ca...

linux 檢視記憶體使用情況

第一部分mem行 total 記憶體總數 1002m used 已經使用的記憶體數 769m free 空閒的記憶體數 232m shared 當前已經廢棄不用,總是0 buffers buffer 快取記憶體數 62m cached page 快取記憶體數 421m 關係 total 1002m ...