温馨提示×

CentOS如何清理内存缓存

小樊
32
2026-07-20 15:38:12
栏目: 智能运维

CentOS 系统中,可以通过以下方式清理内存缓存(page cache、dentries、inodes)。这些操作不会影响正在运行的程序,只是释放内核缓存,但需谨慎使用。


一、查看当前内存使用情况

free -h

cat /proc/meminfo

二、清理内存缓存(推荐方式)

✅ 清理 page cache(最常用、最安全)

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

✅ 清理 dentries 和 inodes

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

✅ 清理 page cache + dentries + inodes(全部)

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

⚠️ 说明

  • sync:将内存中的脏数据写入磁盘,防止数据丢失
  • drop_caches 不会释放正在使用的内存
  • 该操作 不会杀死进程

三、CentOS 7 / 8 / Stream 通用方式

使用 sysctl(推荐)

sync
sysctl vm.drop_caches=3

四、临时生效 vs 永久生效

✅ 临时生效(重启失效)

上述命令均为临时生效。

❌ 不建议永久清理

不建议/etc/sysctl.conf 中设置自动清理缓存,因为:

  • Linux 会自动管理缓存
  • 强制清理可能降低性能

五、是否需要手动清理缓存?

✅ 适合清理的场景

  • 性能测试前
  • 排查内存问题
  • 数据库压测前后

❌ 不建议清理的情况

  • 系统运行正常
  • 生产环境无明确需求

Linux 的 cache 是“可回收内存”,不是内存泄漏。


六、验证清理效果

free -h

观察 buff/cache 是否下降。


七、自动化清理(谨慎使用)

#!/bin/bash
sync
echo 3 > /proc/sys/vm/drop_caches

可加入 cron,但不推荐


八、总结

命令 作用
echo 1 清理 page cache
echo 2 清理目录项和 inode
echo 3 清理全部缓存
sync 写回磁盘

如果你愿意,我可以帮你:

  • 分析 free -h 输出是否异常
  • 判断是否是 内存泄漏
  • 针对 数据库 / Java / Docker 场景给出建议

0