Ubuntu或CentOS系統運作一陣子後,會發現buff/cache佔用了非常大量比例導致記憶體過少,又不想透過重開機來重新釋放記憶體,可以利用下方指令來釋放 Linux 記憶體。
Linux 會用占記憶體來做buff/cache,是為了加速系統在讀取檔案時的效率。
Free 的空間太小對於程式運作上不會有任何問題,因為應用程式可以使用的記憶體空間是 free + buffer + cache。
確認目前記憶體
已下例子中 free 的記憶體空間只剩下 274 MB,大多都被buff/cache使用掉了,
$ free -m
total used free shared buff/cache available
Mem: 7810 523 274 140 7012 6840
Swap: 0 0 0
頁面緩存清除指令
sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches'
目錄和索引節點清除指令
sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches'
pagecache、dentries 和 inode 清除指令
sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
以上動作都需要root 權限才能運作,故所有指令必須加上 sudo 。
以上清除的對象都是乾淨緩存(已經處理完畢),在執行清除前可先執行sync指令,將更多還沒變成乾淨緩存的對象進行標記及處理,當強制釋放記憶體時,才可以回收到更多記憶體空間。