系統及路徑:RedHat:{/usr/bin/free}
shared library:
        libproc.so.2.0.6 => /lib/libproc.so.2.0.6 (0x4001b000)
        libc.so.6 => /lib/libc.so.6 (0x40027000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
用途說明:

free 會顯示出洗統中 已使用 和 未使用 的實體、虛擬記憶體統計 也會顯示出 kernel 使用的 share memory 和 buffer 的大小

摘要:

    free [-b | -k | -m] [-o] [-s delay ] [-t] [-V] 選項說明:

-b 顯示時以 byte 為單位顯示記憶體的大小
-k 顯示時以 kilobyte 為單位顯示記憶體的大j小 (內定值)
-m 顯示時以 megabyte 為單位顯示記憶體的大j小
-t 在最後一行顯示出薨M
-o 使用時則不顯示"buffer adjusted"的那行�
-s delay 每隔 delay 秒之後顯示一次資訊,A並且持續不斷的顯示下去...
-V 顯示 free 的版本資訊
使用實例:
[tstusr@WithHeart tstusr]$ free <== 預設值
total used free shared buffers
cached
Mem: 127876 33360 94516 47524 3240
11556
-/+ buffers/cache: 18564 109312 Swap: 122968 2616 120352

[tstusr@WithHeart tstusr]$ free -b -t <== 用 byte 為單位、顯示Total行
total used free shared buffers
cached
Mem: 130945024 34160640 96784384 48668672 3317760
11833344
-/+ buffers/cache: 19009536 111935488 Swap: 125919232 2678784 123240448
Total: 256864256 36839424 220024832



[tstusr@WithHeart tstusr]$ free -m -o <== 用 megabyte

為單位、不顯示buffer adjusted  
total
cached
used free shared buffers
Mem: 124
11
32 92 46 3
Swap: 120 2 117
[tstusr@WithHeart tstusr]$ free s 3 <== 每三秒顯示一次,最後用 ^C
中斷    
total
cached
used free shared buffers
Mem: 127876
11556
33360 94516 47528 3240
-/+ buffers/cache: 18564 109312
Swap: 122968 2616 120352
total
cached
used free shared buffers
Mem: 127876
11556
33364 94512 47580 3240
-/+ buffers/cache: 18568 109308
Swap: 122968 2616 120352
total
cached
used free shared buffers
Mem: 127876
11556
33364 94512 47580 3240
-/+ buffers/cache: 18568 109308
Swap: 122968
其他:
2616 120352
記憶體相關的資訊都記錄在 /proc/meminfo 這個檔案裡面
可以只接 cat 這個檔得到一些訊息...
free 就是對這個檔案的資訊加以整理之後顯示出來的...


    [GNU/Linux] free -- 檢視系統記憶體使用量

    */ 前言 /*

free -- 這是一隻在 Linux console 下的檢視系統記憶體使用量的 工具程式,包括實體記憶體,和用硬碟分割區代號 82 (參考 linux fdisk) 的置換記憶體 (swap memory),其中會分別標示出核心所使 用中的 shared memory 以及 buffers。而 free 所取得的資訊是來 自於 /proc/meminfo,這是系統即時紀錄記憶體資訊的檔案。free 的作者是 Brian Edmond。

    */ 路徑 /*

以筆者安裝的 RedHat Linux 7.0 為例,free 是放置在 /usr/bin 下。

    */ 所使用的 shared library /*

在筆者所使用的 RedHat Linux 7.0 下,free 所使用到的 shared library 有 libproc.so, libc.so, ld-linux.so。

    */ 使用說明及範例 */

在 console 下直接下命令 free 不加任何參數,會顯示與加上 -k 參數相同的輸出:

[gjchen]$ free    
  total used free shared buffers cached
Mem: 79212 76696 2516 85292 7732 31692
-/+ buffers/cache: 37272 41940
Swap: 88348 3336 85012

以上是在筆者的機器上執行 free 的輸出結果。total 欄顯示實體 記憶體和置換記憶體的總量,used 欄顯示實體記憶體、buffer 以 及置換記憶體的總使用量,而 free 則是剩餘的空間。shared 是 指核心及行程所使用的共享記憶體使用量。buffer 是目前磁碟緩 衝區的大小。cached 是到磁碟間所使用的快取量。

使用者可以使用 -b|-k|-m 來改變 free 的輸出結果的單位。-b 是 以位元組 (byte) 為單位,-k 是以千位元組 (KB -- Kilobyte) 為 單位,-m 是以百萬位元組 (MB -- Megabyte) 為單位。以下分別是 在筆者電腦上執行 free -b, free -k, free -m 的結果:

[gjchen]$ free -b    
  total used free shared buffers cached
Mem: 81113088 79167488 1945600 89714688 6782976 34041856
-/+ buffers/cache: 38342656 42770432
Swap: 90468352 3416064 87052288
[gjchen]$ free -k    
  total used free shared buffers cached
Mem: 79212 77312 1900 87612 6624 33244
-/+ buffers/cache: 37444 41768
Swap: 88348 3336 85012
[gjchen]$ free -m    
  total used free shared buffers cached
Mem: 77 75 1 85 6 32
-/+ buffers/cache: 36 40
Swap: 86 3 83

    -o 的參數是不顯示 -/+ buffers/cache 該的輸出結果:

[gjchen]$ free -o          
  total used free shared buffers cached
Mem: 79212 76608 2604 87616 5980 33172
Swap: 88348 3336 85012      

-t 的參數會在原本的輸出結果加上一行 total 標示出實體記憶 體和置換記憶體的總量:

[gjchen]$ free -t    
  total used free shared buffers cached
Mem: 79212 77300 1912 89136 5456 33780
-/+ buffers/cache: 38064 41148
Swap: 88348 3336 85012
Total: 167560 80636 86924

而有時候我們想要連續一段時間監看記憶體的使用變化,則可以 加上 -s delay 的參數。delay 是一個整數,表示間隔輸出的時 間,單位是秒。如 free -s 3 的意思是每隔三秒輸出一次 free 的結果。

    -V 會顯示 free 的版本資訊:

[gjchen]$ free -V
procps version 2.0.7

    當使用 free 加上了無效的參數時會輸出使用方法 (usage):

[gjchen]$ free -w
free: invalid option -- w
usage: free [-b|-k|-m] [-o] [-s delay] [-t] [-V]

    而更詳細的資訊可以 man free 得到。

    */ 勘誤資訊 /*

    本文如有謬誤或建議,請來信筆者的電子郵件信箱。

gjchen@csie.nctu.edu.tw 交大資工 陳俊哲