在Linux系統下,一般不需要釋放內存,因爲系統已經將內存管理的很好了。但凡是也有例外,有的時候內存會被莫名其妙的佔用掉,導致系統內存很低,此時就需要釋放內存(清理緩存)。
Linux系統的緩存機子是相當先進的,它會針對dentry(用於VFS,加速文件路徑名到inode的轉換)、Buffer Cache(針對磁盤塊的讀寫)和Page Cache(針對文件inode的讀寫)進行緩存操作。但是在進行了大量的文件操作後,緩存會把內存資源基本用光。但實際上我們文件操作已經完成,這部分緩存已經用不到了。這個時候我們難道只能眼睜睜的看着緩存 把內存空間佔據掉麼(不可能)?
要達到釋放緩存的目的,我們首先要了解下關鍵的配置文件 /proc/sys/vm/drop_caches 這個文件記錄了緩存釋放的參數,默認值爲0,也就是不釋放緩存,同時其有也其他的參數:
0 :不釋放緩存
1 :釋放頁緩存
2 :釋放dentries和inodes
3 :釋放所有緩存
下面開始對緩存進行釋放:
(1)#free -m 首先查看內存使用情況
(2)#sync 使用sync命令,將所有未寫的系統緩衝區寫到磁盤中,包含已修改的inode、已延遲的塊I/O和讀寫映射文件。否則在釋放緩存的過程中,可能會丟失保存的文件。
(3)#echo 3 > /proc/sys/vm/drop_caches 將需要的參數寫入到文件中,此命令輸入後立即生效,此時可以直接查看可使用內存就會明顯增加
#cat /proc/sys/vm/drop_caches
(4)#sysctl -p 使配置立即生效
(5)#free -m 查看內存情況