free 是linux 檢視作業系統整體記憶體使用情況的最常用的命令。 但是free命令中的具體field代表哪些含義,這些field之間的具體關係是什麼。恐怕還是有部分同學不太清楚。
預設的單位是kbyte。
[ansen@localhost ~]$ free
total used free shared buffers cached
mem: 2065488 593352 1472136 1684 25308 278444
-/+ buffers/cache: 289600 1775888
swap: 1572860 0 1572860
第一行綠色數字:2065488 : 全部記憶體容量 2g
593352 : 占用記憶體容量
1472136 : 剩餘記憶體容量
1684 : 共享記憶體容量
25308 : buffer 記憶體使用量
278444 : cache 記憶體佔用量
其中:全部記憶體容量 2g = 占用記憶體容量 + 剩餘記憶體容量.
第二行紅色數字:
289600 = 占用記憶體容量(593352) - buffer(25308) - cached(278444), 其實就是用來儲存**,資料,棧,堆(包含作業系統和使用者程式)的記憶體。
1775888 = 剩餘記憶體容量(1472136)+bufer(
25308) +cached(
278444),buffer 與cache的目的是為了提高io效率,是具有檔案背景的記憶體page,可以被替換出記憶體。
第三行藍色數字:
swap 容量, 對於有檔案背景的記憶體(如**,文字檔案等)在記憶體不足的時候可以替換到檔案系統,等真正執行時再從檔案系統載入,但是對於資料(例如資料段,棧和堆的資料等)並沒有檔案背景。swap 即linux 有意的為資料資訊加的檔案背景,這樣在記憶體不足的時候記憶體的資料就可以被swap到檔案系統的swap區,而等到真正執行時候才在檔案系統載入。
下面的例子顯示了cached 欄位的變化,第一次執行查詢時間25s, 第二次查詢時間縮短為6s, 因為經過第一次查詢檔案被快取,第二次io 速度提高。同時可以看到cached記憶體的顯著增加。
[ansen@localhost ~]$ free
total used free shared buffers cached
mem: 2065488 593352 1472136 1684 25308 278444
-/+ buffers/cache: 289600 1775888
swap: 1572860 0 1572860
[ansen@localhost training]$ time find . -name "*.*" -exec grep "sem" {} \;
.............
real
0m25.876s
user
0m1.909s
sys0m6.124s
[ansen@localhost training]$ free
total used free shared buffers cached
mem: 2065488 629652 1435836 1860 34224 319164
-/+ buffers/cache: 276264 1789224
swap: 1572860 0 1572860
[ansen@localhost training]$ time find . -name "*.*" -exec grep "sem" {} \;
.............
real 0m6.663s
user0m0.660s
sys 0m3.216s
Linux free命令詳解
free命令統計出來的記憶體非常具有迷惑性,現在總結如下 第一部分mem行 total 記憶體總數 7863m userd 已經使用的記憶體使用總數 7039m free 剩餘的記憶體總數 823m share 當前已經廢棄不用的記憶體總數 0 buffers 當前被使用的快取大小 583m cac...
linux free命令詳解
free m total used free shared buffers cached mem 1002 769 232 0 62 421 buffers cache 286 715 swap 1153 0 1153 第一部分mem行 total 記憶體總數 1002m used 已經使用的記憶體...
linux free命令詳解
1 free命令功能 free 命令顯示系統使用和空閒的記憶體情況,包括物理記憶體 互動區記憶體 swap 和核心緩衝區記憶體。共享記憶體將被忽略 2 命令格式 free 引數 3 命令引數 b 以byte為單位顯示記憶體使用情況。k 以kb為單位顯示記憶體使用情況。m 以mb為單位顯示記憶體使用情...