free命令是Linux使用者最常用的查看系統內存的命令,它可以顯示當前系統已使用和空閒的內存情況,包括物理內存、交換內存和內核緩存區內存等信息。
free命令的選項也比較簡單,常用的參數命令如下。
-b 以Byte爲單位顯示內存使用情況
-k 以KB爲單位顯示內存使用情況
-m 以MB爲單位顯示內存使用情況
-g 以GB爲單位顯示內存使用情況
-o 不顯示緩衝區調節列
-s<間隔秒數> 持續觀察內存使用情況
-t 顯示內存總和列
-V 顯示版本信息
下面是Linux機器中使用free -m命令看到的內存使用情況。
$free -m
total used free shared buff/cache available
Mem: 7763 5507 907 0 1348 1609
Swap: 16197 2940 13257
可以看到,這個機器上一共有7763MB物理內存。
- total:指系統中總共的內存。這裏有兩種內存,一個是“Mem”,指的是物理內存;另一個是“Swap”,指的是交換磁盤。
- used:指程序使用的內存。
- free:未被分配的物理內存大小。
- shared:共享內存大小,主要用於進程間通信
- buff/cache:buff指的是buffers,用來給塊設備做緩存,而cache指的是page cache,用來給打開的文件做緩存,以提高訪問文件的速度。
- available:這是free命令新加的一個選項。當內存短缺時,系統可用回收buffers和page cache。那麼available = free + buffers + page cache對不對呢?其實在現在的Linux內核中,這個公式不完全正確,因爲buffers和page cache裏並不是所有的內存都可以回收,比如共享內存段、tmpfs和ramfs等都屬於不可回收的。所以這個公式應該變成:available = free + buffers + page cache - 不可回收部分。
(以上內容,摘自《奔跑吧Linux內核 入門篇》)