前言
在Linux系统中有先进的缓存机制,会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作,有效缩短 I/O系统调用(比如read,write)的时间。
但是当我们进行了大量文件操作之后,缓存会把内存资源基本用光,导致系统缓慢,使用swap空间,影响了性能,这时就需要清理缓存了。
手动释放缓存操作
/proc是一个虚拟文件系统,我们可以通过修改 /proc中的文件,来对当前kernel的行为做出调整
我们可以通过调整/proc/sys/vm/drop_caches来释放内存
【1】清缓存前同步
释放内存前先使用sync命令做同步,将所有未写的系统缓冲区写到磁盘中,以确保文件系统的完整性,否则在释放缓存的过程中,可能会丢失未保存的文件。
<1>同步
sync
【2】Linux释放内存
drop_caches的值为是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
<1>释放页缓存
echo 1 > /proc/sys/vm/drop_caches