原文轉自網絡
下面是對這些數值的解釋:
total:總計實體記憶體的大小。
used:已使用多大。
free:可用有多少。
Shared:多個程序共享的記憶體總額。
Buffers/cached:磁盤緩存的大小。
第三行(-/+ buffers/cached):
第四行就不多解釋了。
差別:第二行(mem)的used/free與第三行(-/+ buffers/cache)used/free的差別。
這兩個的差別在于使用的角度來看,第一行是從OS的角度來看,因為對于OS,buffers/cached都是屬于被使用,是以他的可用記憶體是16176KB,已用記憶體是3250004KB,其中包括,核心(OS)使用+Application(X,
oracle,etc)使用的+buffers+cached.
第三行所指的是從應用程式角度來看,對于應用程式來說,buffers/cached 是等于可用的,因為buffer/cached是為了提高檔案讀取的性能,當應用程式需在用到記憶體的時候,buffer/cached會很快地被回收。
是以從應用程式的角度來說,可用記憶體=系統free memory+buffers+cached。
如上例:
2795064=16176+110652+2668236
接下來解釋什麼時候記憶體會被交換,以及按什麼方交換。當可用記憶體少于額定值的時候,就會開會進行交換。
如何看額定值:
用free -m檢視的結果:
檢視/proc/kcore檔案的大小(記憶體鏡像):
備注:占用記憶體的測量
測量一個程序占用了多少記憶體,Linux系統為我們提供了一個很友善的方法,/proc目錄為我們提供了所有的資訊,實際上top等工具也通過這裡來擷取相應的資訊。
輸出解釋
CPU 以及CPU0。。。的每行的每個參數意思(以第一行為例)為:
參數 解釋 /proc//status
Size (pages) 任務虛拟位址空間的大小 VmSize/4
Resident(pages) 應用程式正在使用的實體記憶體的大小 VmRSS/4
Shared(pages) 共享頁數 0
Trs(pages) 程式所擁有的可執行虛拟記憶體的大小 VmExe/4
Lrs(pages) 被映像到任務的虛拟記憶體空間的庫的大小 VmLib/4
Drs(pages) 程式資料段和使用者态的棧的大小 (VmData+ VmStk )4
dt(pages) 04
檢視機器可用記憶體
我們通過free指令檢視機器空閑記憶體時,會發現free的值很小。這主要是因為,在Linux系統中有這麼一種思想,記憶體不用白不用,是以它盡可能的cache和buffer一些資料,以友善下次使用。但實際上這些記憶體也是可以立刻拿來使用的。
是以 空閑記憶體=free+buffers+cached=total-used