温馨提示×

linux缓存怎么释放

小樊
45
2026-10-03 14:44:47
栏目: 智能运维

在 Linux 中,“缓存”通常指 Page Cache / Buffer Cache / dentries & inodes 缓存。这些缓存正常情况下不应该手动频繁释放,因为 Linux 会自动在内存紧张时回收。但在测试、排障或特殊场景下,可以手动释放。


一、查看缓存占用

free -h

或

cat /proc/meminfo | grep -E "MemFree|Buffers|Cached"

二、手动释放缓存(通用方式)

1. 释放 pagecache

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

2. 释放 dentries 和 inodes

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

3. 释放所有缓存(最常用)

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

⚠️ 说明:

  • sync:先把脏数据写回磁盘,防止数据丢失
  • drop_caches 不会杀进程、不会释放 used 内存中的程序数据

三、命令解释

值 作用
1 释放 page cache
2 释放 slab(目录项、inode)
3 释放 1 + 2

四、临时 & 永久设置(不推荐长期使用)

# 临时
sysctl vm.drop_caches=3

# 永久(不推荐)
echo "vm.drop_caches=3" >> /etc/sysctl.conf

五、不推荐手动释放的场景

  • 生产服务器日常运行
  • 数据库服务器(MySQL / Redis)
  • 高 IO 场景

因为这些缓存能显著提升性能。


六、如果你“看起来内存很满”

这是正常现象:

used 高 + cached 高 = 健康

只有当 free 很低且 swap 大量使用时才需要关注。


如果你能补充:

  • 是 物理机 / 容器 / 云服务器
  • 是 CentOS / Ubuntu / 麒麟
  • 释放缓存的目的(测试?OOM?性能?)

我可以给你更合适的建议。

0 踩