c 切換顯示命令名稱和完整命令行。
M 根據駐留內存大小進行排序linux
第四行:內存狀態windows
8306544k total — 物理內存總量(8GB)
7775876k used — 使用中的內存總量(7.7GB)
530668k free — 空閒內存總量(530M)
79236k buffers — 緩存的內存量 (79M)緩存
第五行:swap交換分區
2031608k total — 交換區總量(2GB)
2556k used — 使用的交換區總量(2.5M)
2029052k free — 空閒交換區總量(2GB)
4231276k cached — 緩衝的交換區總量(4GB)服務器
這裏要說明的是不能用windows的內存概念理解這些數據,若是按windows的方式此臺服務器「危矣」:8G的內存總量只剩下530M的可用內存。Linux的內存管理有其特殊性,複雜點須要一本書來講明,這裏只是簡單說點和咱們傳統概念(windows)的不一樣。ide
第四行中使用中的內存總量(used)指的是如今系統內核控制的內存數,空閒內存總量(free)是內核還未歸入其管控範圍的數量。歸入內核管理的內存不見得都在使用中,還包括過去使用過的如今能夠被重複利用的內存,內核並不把這些可被從新使用的內存交還到free中去,所以在linux上free內存會愈來愈少,但不用爲此擔憂。spa
若是出於習慣去計算可用內存數,這裏有個近似的計算公式:第四行的free + 第四行的buffers + 第五行的cached,按這個公式此臺服務器的可用內存:530668+79236+4231276 = 4.7GB。命令行
對於內存監控,在top裏咱們要時刻監控第五行swap交換分區的used,若是這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了。排序
VIRT:virtual memory usage 進程
一、進程「須要的」虛擬內存大小,包括進程使用的庫、代碼、數據等
二、假如進程申請100m的內存,但實際只使用了10m,那麼它會增加100m,而不是實際的使用量
RES:resident memory usage 常駐內存
一、進程當前使用的內存大小,但不包括swap out
二、包含其餘進程的共享
三、若是申請100m的內存,實際使用10m,它只增加10m,與VIRT相反
四、關於庫佔用內存的狀況,它只統計加載的庫文件所佔內存大小 內存