linux與windows不同,會存在快取記憶體,通常叫做cache memory。有些時候你會發現沒有什麼程式在執行,但是使用top或free命令看到可用記憶體會很少。
什麼是cache memory(快取記憶體):
當你讀寫檔案的時候,linux核心為了提高讀寫效率與速度,會將檔案在記憶體中進行快取,這部分記憶體就是cache memory(快取記憶體)。即使你的程式執行結束後,cache memory也不會自動釋放。這就會導致你在linux系統中程式頻繁讀寫檔案後,你會發現可用物理記憶體會很少。
其實這快取記憶體(cache memory)在你需要使用記憶體的時候會自動釋放,所以你不必擔心沒有記憶體可用。如果你希望手動去釋放cache memory(快取記憶體)的話也是有辦法的。
釋放cache memory(快取記憶體):
用下面的命令可以釋放cache memory:
[rootmin@localhost~]#echo 3 > /proc/sys/vm/drop_caches
linux中如何釋放cache記憶體
因為linux的核心機制,一般情況下不需要特意去釋放已經使用的cache。這些cache起來的內容可以增加檔案以及的讀寫速度。
先說下free命令怎麼看記憶體
[rootmin@localhost~]# free
total used free shared buffers cached
mem: 515588 295452 220136 0 2060 64040
-/+ buffers/cache: 229352 286236
swap: 682720 112 682608
其中第一行用全域性角度描述系統使用的記憶體狀況:
total——總物理記憶體
used——已使用記憶體,一般情況這個值會比較大,因為這個值包括了cache+應用程式使用的記憶體
free——完全未被使用的記憶體
shared——應用程式共享記憶體
buffers——快取,主要用於目錄方面,inode值等(ls大目錄可看到這個值增加)
cached——快取,用於已開啟的檔案
注意:total=used+free
used=buffers+cached (maybe add shared also)
第二行描述應用程式的記憶體使用:
前個值表示-buffers/cache——應用程式使用的記憶體大小,used減去快取值
後個值表示+buffers/cache——所有可**用程式使用的記憶體大小,free加上快取值
注意-buffers/cache=used-buffers-cached
+buffers/cache=free+buffers+cached
第三行表示swap的使用:
used——已使用
free——未使用
cache釋放:
1. to free pagecache:
[rootmin@localhost~]#echo 1 > /proc/sys/vm/drop_caches
2. to free dentries and inodes:
[rootmin@localhost~]#echo 2 > /proc/sys/vm/drop_caches
3. to free pagecache, dentries and inodes:
[rootmin@localhost~]#echo 3 > /proc/sys/vm/drop_caches
說明,釋放前最好sync一下,防止丟資料
關於Linux cached記憶體簡析
測試mbs系統,ap的weblogic 只是設定了1.5g記憶體,但是經過3次穩定性測試,記憶體的利用率達到99 nmon的監控揭發發現存在5.6g的cached記憶體,下面介紹一下 linux與windows不同,會存在快取記憶體,通常叫做cache memory。有些時候你會發現沒有什麼程式在執...
Linux cached過高問題
1.cached主要負責快取檔案使用,日誌檔案過大造成cached區記憶體增大把記憶體占用完 free中的buffer和cache 它們都是占用記憶體 buffer 作為buffer cache的記憶體,是塊裝置的讀寫緩衝區 cache 作為page cache的記憶體,檔案系統的cache 如果 ...
關於記憶體管理
簡單的理解,可以將記憶體分為三個部分 靜態區,棧和堆,三個部分都有自己的許可權,不可以隨便讀寫。靜態區 儲存自動全域性變數和static變數,靜態區的內容在總的程式的生命週期都存在,由編譯器在編譯的時候分配。棧 儲存區域性變數。棧上的內容只在函式的範圍內存在,當函式結束,這些內容也會被自動銷毀,效率...