每次使用free時都比較迷惑,對於上面的內容一直都不是很清楚,今天仔細查了以下,和大家一起分享以下:
先看一下free的運行結果:
free打印出的內存信息主要分為兩種,一種是安裝的內存,一種是用磁盤虛擬的內存,就是這裡的Swap,相信裝過Linux系統的同學肯定不陌生交換分區,這裡Swap大小就是我們分區的時候分配的大小。
下面來分別解釋以下每個列的意思:
total:去掉為硬件和操作系統保留的內存後剩余的內存總量。許多人奇怪自己的電腦安裝了一共8G的內存,但是顯示總共只有七點幾G的,現在應該沒什麼疑惑了把,不管Linux還是Windows都會有部分內存是保留給硬件和操作系統的!
userd:當前已使用的內存總量。
free:空閒的或可以使用的內存總量
shared:共享內存大小,主要用於進程間通信
buff(buffers):主要用於塊設備數據緩沖,例如記錄文件系統的metadata(目錄、權限等等信息)。
cache:主要用於文件內容緩沖
available:可以使用的內存總量
buffers與cached的區別:
對於應用程序來說,buffers/cached 是等於可用的,因為buffer/cached是為了提高文件讀取的性能,當應用程序需在用到內存的時候,buffer/cached會很快地被回收。
所以從應用程序的角度來說 可用內存=系統free memory+buffers+cached.
buffers是指用來給塊設備做的緩沖大小,他只記錄文件系統的metadata以及 tracking in-flight pages,cached是用來給文件做緩沖。
那就是說:buffers是用來存儲,目錄裡面有什麼內容,權限等等,而cached直接用來記憶我們打開的文件的。
關於為什麼需要緩沖,這裡簡單解釋以下:我們知道,在CPU,內存,外存的運行速度之間,存在這樣的關系:
CPU比內存快100倍,內存比磁盤快十萬倍,且他們之間的差距還在增大!
因此為了協調他們速度之間的不匹配,緩存就由此而生,在CPU內部的緩存,為了協調CPU和內存之間速度的不匹配,而內存的產生也是為了協調磁盤和CPU速度的不匹配。有個這樣的一個形象的描述:把CPU的一個時鐘周期看作一秒。那麼,從L1 cache(CPU的一級緩存)讀取信息就好像是拿起桌上的一張草稿紙(3秒);從L2 cache(CPU的二級緩存)讀取信息則是從身邊的書架上取出一本書(14秒);而從主存中讀取信息則相當於走到辦公樓下去買個零食(4分鐘),而等待硬盤尋道的時間相當於離開辦公大樓並開始長達一年零三個月的環球旅行,而這僅僅是尋道時間!
free的詳細使用方法
語 法: free [-hbkmotV][-s <間隔秒數>]
補充說明:free指令會顯示內存的使用情況,包括實體內存,虛擬的交換文件內存,共享內存區段,以及系統核心使用的緩沖區等。
參 數:
-b 以Byte為單位顯示內存使用情況。
-k 以KB為單位顯示內存使用情況。
-m 以MB為單位顯示內存使用情況。
-h 以比較人性化的方式顯示內存使用情況。
-o 不顯示緩沖區調節列。
-s <間隔秒數> 持續觀察內存使用狀況。
-t 顯示內存總和列。
-V 顯示版本信息。