buff/cache 是内核管理的可回收内存,包含 buffers(待写入磁盘的数据)和 cache(已读取的文件页),其占用高不等于内存不足;判断是否异常应以 available 是否充足为准,而非 buff/cache 绝对值大小。

直接看 buff/cache 这一列,再结合 available 和实际使用场景,就能判断缓冲区与缓存是否异常占用内存。
buff/cache 到底占了什么内存?
这一列是 Buffers(缓冲区) 和 Cache(页面缓存) 的总和:
- Buffers:临时存放即将写入磁盘的数据(比如刚被修改但还没刷盘的文件块),属于“待出库”状态;
- Cache:已从磁盘读取、暂存在内存中供快速复用的数据(比如频繁访问的日志、程序代码、配置文件),属于“已入库可调用”状态。
它们不是“被程序长期霸占”的内存,而是内核主动管理的可回收资源——只要新进程申请内存,系统会优先释放这部分空间。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
怎么判断 buff/cache 是否异常?
关键不看绝对值大小,而看它是否影响了真实可用性:
- 如果 available ≥ total × 10%(例如总内存16GB,available ≥ 1.6GB),说明缓存虽多但没挤占可用空间,属正常;
- 如果 available 接近 0,同时 buff/cache 占比极高(比如 total 16GB,buff/cache 12GB,available 仅 200MB),说明缓存已无法有效回收,可能因脏页积压、共享内存段锁定或 ramfs/tmpfs 占用导致;
- 注意 shared 列——若该值偏高(如几百MB以上),可能是 tmpfs 挂载(/dev/shm)或大量共享内存段未释放,这类内存通常不能被常规 cache 回收机制清理。
如何定位是谁在大量使用 cache?
free 本身不显示具体来源,但可配合其他命令缩小范围:
- 查大文件读写:用
iotop -o看哪些进程正在高频读写磁盘; - 查 pagecache 分布:运行
cat /proc/meminfo | grep -E "Cached|SReclaimable|Shmem",关注Cached(主 cache)、SReclaimable(可回收的 slab 缓存)、Shmem(共享内存占用); - 查 tmpfs 使用:执行
df -h -t tmpfs,确认 /dev/shm 或自定义 tmpfs 挂载点是否占用了大量内存。
要不要手动清理 buff/cache?
一般不需要,也不推荐随意清理。但若确认是临时性缓存堆积且无业务影响,可谨慎操作:
- 仅清 pagecache:
echo 1 > /proc/sys/vm/drop_caches; - 清 pagecache + dentries + inodes:
echo 3 > /proc/sys/vm/drop_caches; - ⚠️ 注意:该操作需 root 权限,且会短暂增加 I/O 压力,生产环境建议在低峰期执行,并观察
available是否回升、业务是否抖动。










