在linux下,查看一個運行中的程式, 佔用了多少記憶體

來源:互聯網
上載者:User

標籤:

1. 在linux下,查看一個運行中的程式, 佔用了多少記憶體, 一般的命令有

   (1). ps aux:

 

     其中  VSZ(或VSS)列 表示,程式佔用了多少虛擬記憶體。

           RSS列 表示, 程式佔用了多少實體記憶體。

           虛擬記憶體可以不用考慮,它並不佔用實際實體記憶體。

   (2). top 命令也可以

     其中  VIRT(或VSS)列  表示,程式佔用了多少虛擬記憶體。 同 ps aux 中的 VSZ列

           RES列 表示, 程式佔用了多少實體記憶體。同 ps aux 中的RSS列

           

2.在linux下, 查看當前系統佔用了多少記憶體, 一般的命令是  free

其中, free就是系統還有多少記憶體可以使用。

但由於 linux 系統對記憶體使用量有一個原則, 就是, 記憶體是寶貴的, 能使用多少就使用多少。 所以, linux會把已經調用過的包緩衝起來,放在記憶體裡。

這樣,實際上,可以使用的記憶體,就可以理解為, free+buffers+cached

 

3.當你瞭解完這些命令以後, 再去使用ps aux 命令去查看的時候, 會發現一個奇怪的現象。

 所有的  RSS 列的資料,加起來, 比實體記憶體的數要大很多。

 比如, 實體記憶體為2G, 而RSS列的資料加起來,可能有5個G之多, 這是怎麼回事了?

 

 這是因為RSS列的值騙了我們。 

 

 linux的記憶體機制是這樣的:

 在運行一個程式時, linux會調用該程式依賴的連結庫, 如lib.xx.so。 首先看該連結庫是否被映射進記憶體中,如果沒有被映射,則將程式碼片段與資料區段映射到記憶體中,否則只是將其加入進程的地址空間。

 

 這樣,當N個程式,依賴到lib.xx.so的時候, 實際上,記憶體中只有一個lib.xx.so ,而不是N個。 

 

 而RSS在顯示一個程式佔用的實際實體記憶體時, 將lib.xx.so也算了進來。

 

 比如, X程式, 本身佔用記憶體為5M, lib.xx.so 佔用記憶體2M,lib.xx.so被N個程式共用依賴。 則RSS顯示為,X程式運行,佔用記憶體為7M。 實際上, X程式佔用了5M空間。 多餘的2m被討入到RSS中了。

 

 當你在用ps aux顯示記憶體佔用情況時, N個共用依賴lib.xx.so的N個程式,都把這2m空間,算在自己的RSS中了, 這樣RSS的sum值,就比實際實體記憶體多了。

 

 當然, linux的記憶體使用量機制很複雜, 不是一句兩句能說清楚的。這裡只是簡單的說明了一下, ps aux中的RSS值, 並不能真實反映實體記憶體的使用方式。

 

4. 如果查看更詳細的記憶體使用量情況, 可用以下幾種方法, 或者幾種方法結合使用:

這幾種方法,都需要root賬戶的許可權

 

(1). pmap -d $pid 

$pid 是正在啟動並執行程式的pid

 

(2). cat /proc/$pid/smaps

  smaps的資料比較詳細,可簡單的歸納一下,歸納的命令如下:

  cat /proc/$pid/smaps  | awk ‘/Size|Rss|Pss|Shared|Private|Referenced|Swap/{val_name=gensub(/([a-zA-Z_]*).*/,"\\1",1,$1); list[val_name]+=$2; }END{for(val in list)print val,list[val];}‘                     

(3). cat /proc/$pid/maps

 

(4). cat /proc/$pid/statm

輸出解釋

第一列  size:任務虛擬位址空間大小
第二列  Resident:正在使用的實體記憶體大小
第三列  Shared:共用頁數
第四列  Trs:程式所擁有的可執行虛擬記憶體大小
第五列  Lrs:被映像倒任務的虛擬記憶體空間的庫的大小
第六列  Drs:程式資料區段和使用者態的棧的大小
第七列 dt:髒頁數量

在linux下,查看一個運行中的程式, 佔用了多少記憶體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.