Linux使用buffer cache清理内存

Linux使用buffer cache清理内存

在linux读写文件时,buffer cache用于缓存物理磁盘上的磁盘块,从而加快对磁盘上数据的访问。buffer cache的内容对应磁盘上一个块(block),块通常为1K,都是连续的。在linux下,为了更有效的使用物理内存,操作系统自动使用所有空闲内存作为Buffer Cache使用。当程序需要更多内存时,操作系统会自动减小Cache的大小。在linux下,可通过命令cat /proc/meminfo和free -m查看buffer cache的内存使用情况。

#!/bin/bash
if [ `free -g|grep -w 'Mem:'|awk '{print$6}'` -ge 4 ];then 
  # buffer/cache 大于4g 开始清理
        sync
        echo 1 > /proc/sys/vm/drop_caches
        echo 2 > /proc/sys/vm/drop_caches
        echo 3 > /proc/sys/vm/drop_caches
fi
#!/bin/bash
if [ `free -g|grep -w 'Mem:'|awk '{print$6+$7}'` -ge 4 ];then 
  # centos 6  buffer+cache 大于4g 开始清理
    sync
    echo 1 > /proc/sys/vm/drop_caches
    echo 2 > /proc/sys/vm/drop_caches
    echo 3 > /proc/sys/vm/drop_caches
fi