在 Linux 中“缓存不释放”是一个非常常见、也经常被误解的问题。先给结论:大多数情况下,Linux 的缓存不是“不释放”,而是“没必要释放”或“正在按需释放”。下面分情况解释。
通常通过 free / top 看到的是:
buff/cache
它主要包括:
这些不属于“被进程占用”的内存,而是“空闲但可快速复用”的内存。
只要内存空闲,Linux 就会把读过的文件放进 page cache,加快后续访问。
内存不用 = 浪费
所以:
buff/cache 就会暴涨这是正常且健康的行为。
当:
malloc 申请不到空闲内存内核会:
你一般感知不到这个过程。
所以:
buff/cache高 ≠ 内存不够
你执行了:
echo 3 > /proc/sys/vm/drop_caches
但缓存很快又涨回来,原因可能是:
可以用:
cat /proc/meminfo
slabtop
都会占 page cache,看起来“释放不了”。
这是双重缓存,不是 bug。
cp bigfile /tmp
结束后 cache 会长期存在,直到被复用。
✅ 你该关注:
available 内存是否足够❌ 不必纠结:
buff/cache 高Linux 缓存“不释放”通常不是问题,而是它在高效地用内存。
如果你愿意,可以贴一下:
free -hcat /proc/meminfo我可以帮你具体判断是不是真有问题。