在 Linux 系统中,“缓存”通常指 Page Cache / Buffer Cache / dentries & inodes 缓存。这些缓存用于提升性能,正常情况下不需要手动释放,系统会在内存紧张时自动回收。
如果你确实需要手动释放(如测试、排障),可以按下面方式操作。
free -h
或
cat /proc/meminfo
关注以下字段:
BuffersCachedSReclaimable(slab 可回收部分)echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
⚠️ 需要先 sync,避免数据丢失
sync
echo 3 > /proc/sys/vm/drop_caches
该操作 不会杀进程、不会丢已写入磁盘的数据,但会造成短时间 IO 升高。
sysctl vm.drop_caches=3
查看:
cat /proc/slabinfo
释放可回收 slab:
echo 2 > /proc/sys/vm/drop_caches
(slab 中不可回收部分无法强制释放)
如果使用了 swap:
swapoff -a
swapon -a
⚠️ 操作前确保内存充足,否则会 OOM
| 场景 | 建议 |
|---|---|
| 内存充足 | 不释放 |
| 性能测试前 | 可释放 |
| 内存泄漏怀疑 | 查进程而非清缓存 |
| 数据库服务器 | 通常依赖自身缓存 |
如果你能说明:
我可以给你更合适的建议。