linux free查看記憶體資訊詳細說明 free查看記憶體資訊詳細說明root@derek:~# free -m total used free shared buffers cachedMem: 24013 23516 497 0 155 2699-/+ buffers/cache: 20661 3352Swap: 23998 10962 13036 www.2cto.com Mem:表示實體記憶體-/+ buffers/cache:實體記憶體的緩衝統計Swap:表示硬碟上交換分區(虛擬記憶體)total:實體記憶體與虛擬記憶體總量used:已使用記憶體free:空閑記憶體shared:共用記憶體buffers:緩衝區記憶體cached:快取 詳解shared、buffers、cachedShared:對於共用記憶體,主要用於在UNIX環境下不同進程之間共用資料,是處理序間通訊的一種方法,一般的應用程式不會申請使用共用記憶體。 www.2cto.com Cache:快取,是位於CPU與主記憶體間的一種容量較小但速度很高的儲存空間。由於CPU的速度遠高於主記憶體,CPU直接從記憶體中存取資料要等待一定時間周期,Cache中儲存著CPU剛用過或迴圈使用的一部分資料,當CPU再次使用該部分資料時可從Cache中直接調用,這樣就減少了CPU的等待時間,提高了系統的效率。Cache又分為一級Cache(L1 Cache)和二級Cache(L2Cache),L1 Cache整合在CPU內部,L2 Cache早期一般是焊在主板上,現在也都整合在CPU內部,常見的容量有256KB或512KB L2 Cache。 Buffer:緩衝區,主要用於高速寫入資料時先寫到記憶體中,在由記憶體寫入硬碟;一個用於儲存速度不同步的裝置或優先順序不同的裝置之間傳輸資料的地區。通過緩衝區,可以使進程之間的相互等待變少,從而使從速度慢的裝置讀入資料時,速度快的裝置的操作進程不發生間斷。 緩衝(cached)是把讀取過的資料儲存起來,重新讀取時若命中(找到需要的資料)就不要去讀硬碟了,若沒有命中就讀硬碟。其中的資料會根據讀取頻率進行組織,把最頻繁讀取的內容放在最容易找到的位置,把不再讀的內容不斷往後排,直至從中刪除。 緩衝(buffers)是根據磁碟的讀寫設計的,把分散的寫操作集中進行,減少磁碟片段和硬碟的反覆尋道,從而提高系統效能。linux有一個守護進程定期清空緩衝內容(即寫如磁碟),也可以通過sync命令手動清空緩衝 www.2cto.com buffer和cache(它們都是佔用記憶體):buffer: 作為buffer cache的記憶體 ,是塊裝置的讀寫緩衝區cache: 作為page cache的記憶體 , 檔案系統的cache,如果cache的值很大,說明cache住的檔案數很多。如果頻繁訪問到的檔案都能被cache住,那麼磁碟的讀IO bi會非常小。 buffer是即將要被寫入磁碟的,而cache是被從磁碟中讀出來的。buffer是由各種進程分配的,被用在如輸入隊列等方面,一個簡單的例子如某個進程要求有多個欄位讀入,在所有欄位被讀入完整之前,進程把先前讀入的欄位放在buffer中儲存。cache經常被用在磁碟的I/O請求上,如果有多個進程都要訪問某個檔案,於是該檔案便被做成cache以方便下次被訪問,這樣可提供系統效能。 參數解釋:-buffers/cache(used)指的是程式已經使用的記憶體-buffers/cache(used) = used – buffers – cached +buffers/cache(free)指的是空閑可以使用的記憶體+buffers/cache(free) = free + buffers + cached www.2cto.com 命令參數:free: invalid option -- husage: free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V] -b,-k,-m,-g show output in bytes, KB, MB, or GB -l show detailed low and high memory statistics -o use old format (no -/+buffers/cache line) -t display total for RAM + swap -s update every [delay] seconds -c update [count] times -V display version information and exit linux釋放緩衝cached首先我們需要使用sync指令,將所有未寫的系統緩衝區寫到磁碟中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫對應檔。否則在釋放緩衝的過程中,可能會丟失未儲存的檔案。#sync接下來,我們需要將需要的參數寫進/proc/sys/vm/drop_caches檔案中,比如我們需要釋放所有緩衝,就輸入下面的命令:#echo 3 > /proc/sys/vm/drop_caches www.2cto.com 0 – 不釋放1 – 釋放頁緩衝2 – 釋放dentries和inodes3 – 釋放所有緩衝