插件窝 干货文章 如何在 Linux 上清除 RAM 内存缓存、缓冲区和交换空间?

如何在 Linux 上清除 RAM 内存缓存、缓冲区和交换空间?

清除 缓存 bash caches 954    来源:    2025-05-13

在 Linux 系统中,可以通过以下方法安全地清除内存缓存、缓冲区和交换空间。请注意,这些操作通常不需要手动执行,系统会自动管理内存资源。但在特殊情况下(如测试或性能调优),可以按需操作:


1. 清除 PageCache(页面缓存)

sync; echo 1 > /proc/sys/vm/drop_caches
  • sync:确保所有未写入磁盘的数据先被保存
  • echo 1:仅清除 PageCache

2. 清除 dentries 和 inodes(目录项和索引节点缓存)

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

3. 清除 PageCache + dentries + inodes(全部缓存)

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

4. 清除交换空间(Swap)

swapoff -a && swapon -a
  • 这会临时禁用交换空间后再重新启用,从而清空交换分区。

5. 清除缓冲区(Buffers)

sync; echo 2 > /proc/sys/vm/drop_caches  # 包含缓冲区清除

注意事项

  1. 需要 root 权限:上述命令需以 sudo 或 root 用户执行。
  2. 性能影响:清除缓存后,系统可能需要重新加载磁盘数据到内存,可能导致短暂性能下降。
  3. 生产环境慎用:除非必要,否则让内核自动管理内存效率更高。
  4. 持久化配置(可选):若需每次启动自动清理,可添加到 /etc/sysctl.confbash vm.drop_caches = 1 然后运行 sysctl -p 生效。

验证效果

free -h

观察 buff/cacheswap 字段的变化。


替代方案:使用 sysctl 命令

sysctl -w vm.drop_caches=1

通过以上方法,你可以按需管理 Linux 系统的内存使用。