1. 程式人生 > >Linux系統記憶體佔用90%以上——解決方法

Linux系統記憶體佔用90%以上——解決方法

最近遇到一個疑問,不管是top,還是cat /proc/meminfo,  發現free記憶體基本快沒了,難道我們的程式出問題了?排查半天沒有事,

後來百度到相關帖子,記錄一下,這是Linux核心機制,

Linux與Windows不同,會存在快取記憶體,通常叫做Cache Memory。有些時候你會發現沒有什麼程式在執行,但是使用top或free命令看到可用記憶體會很少。 什麼是Cache Memory(快取記憶體): 當你讀寫檔案的時候,Linux核心為了提高讀寫效率與速度,會將檔案在記憶體中進行快取,這部分記憶體就是Cache Memory(快取記憶體)。即使你的程式執行結束後,Cache Memory也不會自動釋放。這就會導致你在Linux系統中程式頻繁讀寫檔案後,你會發現可用實體記憶體會很少。 其實這快取記憶體(Cache Memory)在你需要使用記憶體的時候會自動釋放,所以你不必擔心沒有記憶體可用。如果你希望手動去釋放Cache Memory(快取記憶體)的話也是有辦法的。 釋放Cache Memory(快取記憶體): 用下面的命令可以釋放Cache Memory: [
[email protected]
~]#echo 3 > /proc/sys/vm/drop_caches Linux中如何釋放cache記憶體 因為LINUX的核心機制,一般情況下不需要特意去釋放已經使用的cache。這些cache起來的內容可以增加檔案以及的讀寫速度。 先說下free命令怎麼看記憶體 [[email protected]~]# 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: [
[email protected]
~]#echo 1 > /proc/sys/vm/drop_caches 2.   To free dentries and inodes: [[email protected]~]#echo 2 > /proc/sys/vm/drop_caches 3.   To free pagecache, dentries and inodes: [[email protected]~]#echo 3 > /proc/sys/vm/drop_caches 說明,釋放前最好sync一下,防止丟資料