轉至:http://blog.is36.com/linux_free_command_for_memory/
linux下在終端環境下可以使用free命令看到系統實際使用內存的情況,一般用free -m方式查看內存占用情況(兆為單位)。而系統實際可用內存是不是free部分呢,不是的,系統實際內存占用以及可用內存有如下幾個加減法:
- used=total-free 即 total=used+free
- 實際內存占用:used-buffers-cached 即 total-free-buffers-cached
- 實際可用內存:buffers+cached+free
total used free shared buffers cached
Mem: 128 119 8 0 1 22
-/+ buffers/cache: 95 32
swap: 255 0 255
第1行Mem數據:
- total 內存總數: 128
- used 已經使用的內存數: 119
- free 空閑的內存數: 8
- shared 當前已經廢棄不用,總是0
- buffers Buffer Cache內存數: 1
- cached Page Cache內存數: 22
第2行-/+ buffers/cache:
- -buffers/cache 的內存數:95 (等於第1行的 used - buffers - cached)
- +buffers/cache 的內存數: 32 (等於第1行的 free + buffers + cached)
可見-buffers/cache反映的是被程序實實在在吃掉的內存,而+buffers/cache反映的是可以挪用的內存總數。
第三行數據是交換分區SWAP的,也就是我們通常所說的虛擬內存。
為了提高磁盤存取效率, Linux做了一些精心的設計, 除了對dentry進行緩存(用於VFS,加速文件路徑名到inode的轉換), 還采取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁盤塊的讀寫,后者針對文件inode的讀寫。這些Cache有效縮短了 I/O系統調用(比如read,write,getdents)的時間。
感興趣的可以進一步參考文件/proc/meminfo,free命令就是根據它的信息生成的。free命令的源碼可從procps-xxx-.src.rpm獲取,xxx為版本號,比如procps-3.2.3-5.3.src.rpm。