在 Linux 系统中,缓存占用高通常是正常现象,而且是有意为之的设计。下面从「为什么高」「是否正常」「如何排查」「如何释放」四个方面说明。
Linux 会尽量利用空闲内存做缓存(cache / buffer),以提升系统性能:
write() 系统调用先写 buffer,再异步刷盘空闲内存 = 浪费的内存
所以 Linux 会:
✅ 绝大多数情况是正常的
判断标准:
free -h
示例输出:
total used free shared buff/cache available
Mem: 16Gi 3.0Gi 1.2Gi 200Mi 11.8Gi 12.5Gi
重点看:
available 很大 → 没问题available 很小 + 开始 swap → 才有问题很多人只看 used 高就以为内存不够,其实:
used 包含 cacheavailable都会让 cache 明显升高。
如果:
available 持续下降才可能是异常。
cat /proc/meminfo
关注:
CachedBuffersSReclaimable(可回收)top
# 或
ps aux --sort=-%mem
sudo fincore <文件>
sync
echo 3 > /proc/sys/vm/drop_caches
⚠ 注意:
| 情况 | 说明 |
|---|---|
| cache 高但 available 高 | ✅ 正常 |
| 开始频繁 swap | ❌ 内存不足 |
| OOM Kill | ❌ 严重 |
| 某个进程内存持续增长 | ⚠ 泄漏 |
Linux 缓存高不是问题,而是性能优化;只有 available 内存不足才是问题。
如果你愿意,可以贴一下:
free -h我可以帮你具体分析。