查看Linux服務器下的內存使用情況,可以使用命令free -m
[root@localhost ~]$ free // 以KB為單位顯示內存使用情況 [root@localhost ~]$ free -m // 以MB為單位顯示內存使用情況 [root@localhost ~]$ free -g // 以GB為單位顯示內存使用情況
free -m total used free shared buffers cached Mem: 48211 18670 29541 0 798 15510 -/+ buffers/cache: 2361 45850 Swap: 3999 0 3999 //Mem:物理內存使用情況 //swap:交換分區情況 //+buffers/cache:(可用)的內存數,即free+buffers+cached //-buffers/cache:(已用)的內存數,即used-buffers-cached //total:物理內存總大小 當前49GB //used:已經使用的物理內存大小 當前19GB //free:空閑的物理內存大小 當前46G //shared:多個進程共享的物理內存大小 //buffers Buffer:緩存內存數 當前798MB //cached Page:緩存內存數 當前16GB 可用內存的計算公式為: 可用內存=free+buffers+cached
即29541MB+798MB+15510MB=45849MB
其中,內存總數與已使用內存數和空閑內存數的關系是:
total(49GB)=used(19G)+free(30G)
在第二部分內容(-/+buffers/cache)中各參數如下所示。
(-buffers/cache):已用的used內存數,即2.361G(指的是第一部分Mem行中的used-buffers-cached)。 (18670-798-15510)
(+buffers/cache):可用的free內存數,即45850G(指的是第一部分Mem行中的free+buffers+cached)。
可見-buffers/cache反映的是被程序實實在在用掉的內存,而+buffers/cache反映的是可以用的內存總數。
centos7 free -h命令
[root@localhost ~]$ free -h // 自動轉換單位顯示內存使用情況(centos7才有)
輸出結果:
[root@MongoDB ~]# free -h total used free shared buff/cache available Mem: 652M 169M 222M 5.6M 261M 350M Swap: 4.0G 0B 4.0G // Mem:物理內存的使用情況 // Swap:交換分區的使用情況 // total 總物理內存大小 // used 已經使用的物理內存大小 // free:空閑的物理內存大小 // shared:多個進程共享的物理內存大小 // buff/cache:用做緩沖/緩存的物理內存大小 // available:還可用的物理內存大小 // total 總內存 = used + free + buff/cache // available 還能用的內存 = free + buff/cache // 如果使用到交換分區,則表明物理內存不夠或內存泄漏了 // 關於 buffer 和 cache: // 我們的數據是存放在磁盤上的,數據是交給CPU進行處理的,但磁盤的運轉速度很快,CPU的運轉速度很慢,不可能直接把磁盤的數據直接丟給CPU進行處理,因此要經過 // 一個中間層,即內存,我們把這部分內存稱為緩存(cache);相反地,CPU把數據處理完了,要存放到磁盤中,也要經過內存這個中間層,這部分內存則稱為緩沖(buffer) // 因此,數據的流向不一樣,內存的角色也不一樣。系統會優先預留一部分內存給 buff/cache 使用,剩下的內存再留給系統或程序使用
