Linux 當記憶體被大量使用, 然後這些記憶體又被當 cache 用, 於是記憶體不足時無法回收, 就會出現問題.
手動回收 Cached Memory
有下述兩種方式可以手動做回收記憶體:
- 參考此文: 回收 Linux cached memory
echo 1 > /proc/sys/vm/drop_caches or sysctl -w vm.drop_caches=1
- 之前 AceLan 長輩指點的方式
# And free up caches # echo Freeing the page cache: echo 1 > /proc/sys/vm/drop_caches echo Free dentries and inodes: echo 2 > /proc/sys/vm/drop_caches echo "Free the page cache, dentries and the inodes: (1+2)" echo 3 > /proc/sys/vm/drop_caches
- $ sudo sh -c 'free -m && echo 1 > /proc/sys/vm/drop_caches && free -m' # 看記憶體前後變化
Linux 查看 Cache 的記憶體使用量
Linux 下述有幾個命令可以看到 cache 的記憶體使用量:
- htop 的 Help 會看到這個說明: (第三欄的 cache used)
- Memory bar: [used/buffers/cache used/total].
- top 看到的數字: (右下角的 cached Mem)
- KiB Mem: 32704316 total, 32311364 used, 392952 free, 721316 buffers
- KiB Swap: 78903288 total, 824512 used, 78078776 free. 24875720 cached Mem
- free -m 的 cached 對應的 Mem 欄位
- total used free shared buffers cached
- Mem: 31937 31566 371 958 704 24295