最准的物理内存总量是 free -h 输出中 mem: 行的 total 值,已剔除显存、bios/uefi 预留等保留内存;剩余可用量应看 available 列,它反映可立即分配且不触发 swap 的内存。

直接用 free -h 就能快速看清内存还剩多少、哪些部分在“干活”,关键不是看“用了多少”,而是看“还能不能立刻撑住新任务”——这得盯紧 available 这个值。
一眼看懂 free -h 输出的六列含义
执行 free -h 后,Mem 行显示物理内存状态,共六列:
- total:物理内存总量(比如 16G)
- used:含缓存和实际占用的总和,不能当“真被程序吃光”来理解
- free:完全没动过的空闲内存,通常很小,不代表系统快崩了
- shared:tmpfs 或 IPC 共享内存占用,一般较小,可暂不关注
- buff/cache:内核为加速磁盘读写自动管理的缓冲区与页缓存,大部分可随时回收
- available:系统估算出的、无需触发 swap 就能立即分配给新进程的内存,是判断余量的核心指标
判断内存是否紧张,只看 available 是否足够
available 是经过内核动态估算的可用值,已扣除不可回收部分(如 ramfs、锁定页等)。经验上:
- 若 available 持续低于总内存的 10%~15%,说明真实余量吃紧,需排查或扩容
- 哪怕 used 很高、buff/cache 占了 10G,只要 available 还有 2G+,系统通常运行平稳
- 如果 available 接近 0 且 swap 的 used 开始上升,才是内存真正不足的明确信号
动态观察变化,定位波动问题
加参数让数据“活起来”,适合监控服务启停、批量任务等场景:
-
free -h -s 2:每 2 秒刷新一次,手动按 Ctrl+C 停止 -
free -h -c 10:连续输出 10 次后自动退出 -
free -h -s 3 -c 10:每 3 秒一次,共 10 次,覆盖 30 秒趋势,适合快速抓异常
辅助理解:buff/cache 不是“浪费”,而是内核的智能预占
它由两部分组成:
- buffers:暂存待写入磁盘的数据(如日志缓冲)
- cache:缓存刚读过的文件内容,下次访问更快
- 它们不等于“被程序锁死”,绝大多数会在内存压力升高时被内核自动释放,所以 available ≈ free + 可回收的 buff/cache(不是简单相加,但方向如此)
不复杂但容易忽略。











