说明

    和其他操作系统一样,linux已经实现了很有效的内存管理机制,但是任何一个进程损坏了系统的内存,那么你就必须清理它,linux提供了一个比较好的方式刷新\清除RAM缓存。

注意:并不是什么时候都需要清除RAM缓存的,大家都知道,linux查找数据都是优先从RAM缓存中查找的,一旦清空缓存,所有的数据都需要从磁盘读取,所以只在需要的时候清空缓存,才是正确的选择。


如何清除linux缓存?

    1.只清除PageCache:

# sync; echo 1 > /proc/sys/vm/drop_caches

    

    2.清除dentries and inodes

# sync; echo 2 > /proc/sys/vm/drop_caches

    

    3.同时清除PageCache和dentries and inodes

# sync; echo 3 > /proc/sys/vm/drop_caches

对上面的命令的解释:    

    sync将会刷新系统的buffer   

    根据官方内核文档描述,对drop_caches写入值将会在不杀死任何应用服务的情况下清空缓存。

    在生产环境中建议使用echo 1,因为它会优先清空磁盘缓存。


效果展示:

如何清除linux的内存缓存,缓冲和交换空间_linux 清除缓存


使用shell脚本自动在晚上2点清除RAM缓存

vim  clearcache.sh 
#!/bin/bash
echo "echo 1 > /proc/sys/vm/drop_caches"
# chmod 755 clearcache.sh
# crontab -e
    0  3  *  *  *  /path/to/clearcache.sh


如何清除交换空间?

简单的清除可以使用如下的命令

# swapoff -a && swapon -a

结合上面的脚本

vim  clearcache.sh 
#!/bin/bash
echo "echo 1 > /proc/sys/vm/drop_caches" && swapoff -a && swapon -a && 
printf '\n%s\n' 'Ram-cache and Swap Cleared'