判断内存是否真实耗尽应看available列,而非used或buff/cache;available反映可立即分配给新进程的内存,其持续低于总内存10%~20%、swap used上升、vmstat中si/so持续非零,才是物理内存不足的关键信号。

直接看 Available 这一列,它才是判断内存是否真实耗尽的核心依据。
重点盯 Available,不是 Used 或 buff/cache
Linux 会把空闲内存尽可能用于 page cache(文件缓存)和 buffers(块设备缓冲),这是优化性能的设计,不是浪费。所以:
- Used 高 ≠ 内存紧张——它包含大量可回收的 cache/buffers
- buff/cache 高 ≠ 内存被“占死”——这部分是热数据暂存区,内核随时能释放
- Available 才是系统当前能立即分配给新进程的内存估算值(已扣除不可回收部分)
真实耗尽的三个关键信号
当以下情况同时或持续出现时,才说明物理内存确实不足:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- Available 持续低于总内存的 10%~20%(例如 16G 内存下长期低于 1.6G)
- SwapUsed 明显上升(free 输出中 Swap 行的 used 值变大)
- vmstat 1 中 si/so 列持续非零(表示正在频繁换入/换出页面)
辅助验证:拆开 buff/cache 看构成
如果想进一步确认缓存类型占比:
- 用
free -h -w(Linux 5.0+ 内核)直接分列显示 Buffers 和 Cache - 老内核可查
/proc/meminfo:Buffers:对应短生命周期的块设备缓冲(如元数据、待写数据)Cached:主要是页缓存(PageCache),含部分可回收 slab(见SReclaimable)
别踩这些坑
常见误操作和误解:
- 看到 buff/cache 占 85%,立刻
echo 3 > /proc/sys/vm/drop_caches——清完可能卡顿,且解决不了真正吃内存的进程问题 - 盯着 top 的 RES 或 ps 的 VSZ 判断整体内存压力——单个进程 RSS 高,不代表系统缺内存;得结合 Available 看全局
- 认为 free 列为 0 就没内存了——free 是完全未分配内存,Linux 不鼓励留这么多“闲置”空间










