linux內存暴多問題

最近遇到一個疑問,不管是top,還是cat /proc/meminfo, ?發(fā)現(xiàn)free內存基本快沒了,難道我們的程序出問題了?排查半天沒有事,

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

Linux與Windows不同,會存在緩存內存,通常叫做Cache Memory。有些時候你會發(fā)現(xiàn)沒有什么程序在運行,但是使用top或free命令看到可用內存會很少。


什么是Cache Memory(緩存內存):


當你讀寫文件的時候,Linux內核為了提高讀寫效率與速度,會將文件在內存中進行緩存,這部分內存就是Cache Memory(緩存內存)。即使你的程序運行結束后,Cache Memory也不會自動釋放。這就會導致你在Linux系統(tǒng)中程序頻繁讀寫文件后,你會發(fā)現(xiàn)可用物理內存會很少。


其實這緩存內存(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


其中第一行用全局角度描述系統(tǒng)使用的內存狀況:


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一下,防止丟數(shù)據(jù)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容