Linuxのメモリ解放


photo credit: AlicePopkorn

プロセスを再起動しても、停止しても一向にメモリの使用量が減らない。
そんな事で悩まされてる方は多いかと思います。

というわけでメモリ解放方法について。

まず、基本的に稼働時間に合わせてメモリのfree領域は減っていくのは当たり前。
空きがあればどんどんcacheとして使われていくので空き領域は無くなっていきます。

で、確保した領域を解放せずに次回別のプロセスで領域が必要になった場合に
cacheから再利用するため、freeコマンドでみたMemfreeが少なくても
実際には意外に余裕があるケースが結構あります。

実際にはでvmstat -aやcat /proc/meminfoでActiveとInactiveを監視するのが良いようです。

詳細については@ITに詳しく書いてあります。
※むしろこちらの方が詳しくて参考になるかも(汗

で肝心のメモリの解放方法ですが、
使い終わったページキャッシュ等をMemFreeに移動する方法として以下

0. デフォルト状態に戻す場合
# echo 0 > /proc/sys/vm/drop_caches

1. ページキャッシュのみを解放したい場合
# echo 1 > /proc/sys/vm/drop_caches

2. Slabキャッシュを解放したい場合
# echo 2 > /proc/sys/vm/drop_caches

3. ページキャッシュとSlabキャッシュを解放したい場合
# echo 3 > /proc/sys/vm/drop_caches

上記で解放出来ます。
ちなみに実行前には一度「sync」しておいた方が良さそうです。

コメント

タイトルとURLをコピーしました