在 CentOS 系统中,可以通过以下方式清理内存缓存(page cache、dentries、inodes)。这些操作不会影响正在运行的程序,只是释放内核缓存,但需谨慎使用。
free -h
或
cat /proc/meminfo
sync
echo 1 > /proc/sys/vm/drop_caches
sync
echo 2 > /proc/sys/vm/drop_caches
sync
echo 3 > /proc/sys/vm/drop_caches
⚠️ 说明
sync:将内存中的脏数据写入磁盘,防止数据丢失drop_caches 不会释放正在使用的内存sync
sysctl vm.drop_caches=3
上述命令均为临时生效。
不建议在 /etc/sysctl.conf 中设置自动清理缓存,因为:
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 输出是否异常