温馨提示×

linux缓存如何释放

小樊
49
2026-10-12 09:28:23
栏目: 智能运维

在 Linux 系统中,“缓存”通常指 Page Cache / Buffer Cache / dentries & inodes 缓存。这些缓存用于提升性能,正常情况下不需要手动释放,系统会在内存紧张时自动回收。

如果你确实需要手动释放(如测试、排障),可以按下面方式操作。


一、查看内存与缓存使用情况

free -h

或

cat /proc/meminfo

关注以下字段:

  • Buffers
  • Cached
  • SReclaimable(slab 可回收部分)

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

1️⃣ 释放 pagecache(最常用)

echo 1 > /proc/sys/vm/drop_caches

2️⃣ 释放 dentries 和 inodes

echo 2 > /proc/sys/vm/drop_caches

3️⃣ 释放所有缓存(pagecache + dentries + inodes)

echo 3 > /proc/sys/vm/drop_caches

⚠️ 需要先 sync,避免数据丢失

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

该操作 不会杀进程、不会丢已写入磁盘的数据,但会造成短时间 IO 升高。


三、使用 sysctl 方式(等价)

sysctl vm.drop_caches=3

四、释放 slab 缓存(内核对象缓存)

查看:

cat /proc/slabinfo

释放可回收 slab:

echo 2 > /proc/sys/vm/drop_caches

(slab 中不可回收部分无法强制释放)


五、Swap 缓存释放

如果使用了 swap:

swapoff -a
swapon -a

⚠️ 操作前确保内存充足,否则会 OOM


六、不推荐频繁释放缓存的原因

  • 缓存是性能优化
  • 手动释放会导致:
    • 磁盘 IO 飙升
    • 应用响应变慢
  • 系统内存不足时会自动回收

七、常见场景建议

场景 建议
内存充足 不释放
性能测试前 可释放
内存泄漏怀疑 查进程而非清缓存
数据库服务器 通常依赖自身缓存

如果你能说明:

  • 使用的是 CentOS / Ubuntu / 容器 / 云服务器
  • 是 系统卡顿 / 测试 / OOM

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

0 踩