执行 free -h 后,应重点查看 available 列数值,它表示系统估算出可立即分配给新进程的内存量,等于 free 加上可回收的 buff/cache;只要 available 保持在几百 mb 以上通常无瓶颈,持续低于总内存 5% 才需警惕。

直接运行 free -h,看 available 这一列的数值,就是当前真正能给新程序用的内存余量。
关键字段怎么看
执行 free -h 后,重点关注 Mem 行(物理内存):
- total:服务器实际安装的物理内存总量
- used:已被占用的内存,但含大量可回收缓存,不能单看它判断是否紧张
- free:完全没被使用的“裸空闲”内存,通常很小,不代表真实可用量
- buff/cache:内核用于文件缓存和缓冲区的内存,大部分可即时释放
- available:重点!系统估算出的、能立即分配给新进程的内存,= free + 可回收的 buff/cache 部分
别被 used 和 free 带偏
很多新手看到 used 接近 total 就以为内存快爆了,其实不是。Linux 会主动用空闲内存做缓存提升性能,这部分在需要时会自动释放。
- 只要
available还有几百 MB 以上,一般不构成瓶颈 - 如果
available持续低于总内存的 5%(比如 3.6G 内存下长期低于 180MB),才需警惕 -
free列数值小是正常现象,不代表内存不够用
常用实用写法
-
free -h:最推荐,单位自适应,清晰易读 -
free -h -s 2:每 2 秒刷新一次,适合观察内存波动 -
free -h -c 3:只显示 3 次后退出,适合脚本调用 -
free -m | awk 'NR==2{print "可用:" $7 "MB"}':提取 available 值,方便集成到监控中
顺便留意 Swap
查看输出下方的 Swap 行:
- 如果
Swap used明显大于 0(比如 >100MB),说明物理内存确实吃紧,系统开始使用硬盘交换空间,性能会下降 - Swap total 为 0 也不少见(尤其云服务器默认不配 Swap),这时更得盯紧
available - Swap 持续增长 + available 持续走低,往往是内存泄漏或负载突增的信号











