linux下的記憶體檢視(virt,res,shr,data的意義)

pythontab發表於2013-12-25

其實在認真閱讀了這篇名為“計算記憶體使用”的文章之後,還是處於半迷糊狀態。這位作者就說Linux下面沒有特別好的顯示記憶體佔用的工具,雖然有top和free,但都說得不清楚,就跟巫毒教的魔術似的。

比如top這個工具,它會顯示3種資料,作者分別解釋如下:

VIRT:virtual memory usage。Virtual這個詞很神,一般解釋是:virtual adj.虛的, 實質的, [物]有效的, 事實上的。到底是虛的還是實的?讓Google給Define之後,將就明白一點,就是這東西還是非物質的,但是有效果的,不發生在真實世界的,發生在軟體世界的等等。這個記憶體使用就是一個應用佔有的地址空間,只是要應用程式要求的,就全算在這裡,而不管它真的用了沒有。寫程式怕出錯,又不在乎佔用的時候,多開點記憶體也是很正常的。

RES:resident memory usage。常駐記憶體。這個值就是該應用程式真的使用的記憶體,但還有兩個小問題,一是有些東西可能放在交換盤上了(SWAP),二是有些記憶體可能是共享的。

SHR:shared memory。共享記憶體。就是說這一塊記憶體空間有可能也被其他應用程式使用著;而Virt - Shr似乎就是這個程式所要求的並且沒有共享的記憶體空間。

DATA:資料佔用的記憶體。如果top沒有顯示,按f鍵可以顯示出來。這一塊是真正的該程式要求的資料空間,是真正在執行中要使用的。

所以DA他的含義比較確定,甚至可以用程式讀取的資料量計算出來;SHR是一個潛在的可能會被共享的數字,如果只開一個程式,也沒有別人共同使用它;VIRT裡面的可能性更多,比如它可能計算了被許多X的庫所共享的記憶體;RES應該是比較準確的,但不含有交換出去的空間;但基本可以說RES是程式當前使用的記憶體量。


相關文章