通过free -g,发现内存太少,缓存占用太多。如下图:
执行:
sudo sh -c "echo 1 > /proc/sys/vm/drop_caches"
命令 sudo sh -c "echo 1 > /proc/sys/vm/drop_caches"
的作用是清空Linux系统的文件系统缓存。具体来说,这个命令会将 /proc/sys/vm/drop_caches
文件的内容设置为 1
,从而告诉内核释放部分缓存。
详细解释
/proc/sys/vm/drop_caches
:这是一个虚拟文件,位于/proc
文件系统中。它允许用户控制内核如何处理内存中的缓存。echo 1
:将数字1
写入到该文件中。>
:重定向操作符,将前面命令的输出写入到指定的文件中。sudo
:以超级用户权限运行命令,因为修改/proc/sys/vm/drop_caches
需要管理员权限。sh -c
:使用sh
shell 来执行括号内的命令字符串。
drop_caches
的值及其含义
- 0:默认值,不释放任何缓存。
- 1:释放页面缓存(page cache)。页面缓存用于存储从磁盘读取的数据,以便快速访问。
- 2:释放目录项和inode缓存(dentries and inodes)。
- 3:释放页面缓存、目录项和inode缓存(相当于1和2的组合)。
命令的具体效果
echo 1 > /proc/sys/vm/drop_caches
:释放页面缓存,但保留目录项和inode缓存。echo 3 > /proc/sys/vm/drop_caches
:释放所有类型的缓存(页面缓存、目录项和inode缓存)。
使用场景
- 性能测试:在进行性能测试时,有时需要确保没有缓存的影响,以获得更准确的结果。
- 内存管理:当系统内存紧张时,可以通过释放缓存来释放一些内存供其他进程使用。
- 调试:在调试某些与缓存相关的问题时,可以手动清除缓存来观察系统行为的变化。
注意事项
- 清除缓存会导致后续的磁盘访问变慢,因为数据需要重新从磁盘加载到缓存中。
- 这个操作通常是临时的,系统会在需要时自动重新填充缓存。