Linux内存free命令解读,判断内存是否不足

很多人执行 free -h 后看到 free 那一列数值很小就以为内存不够用了,其实这个判断经常出错。
本文会带你逐个看懂 free 命令的输出字段,重点用 available 列判断 Linux 内存是否真的不足,并给出查看高占用进程、清理缓存和验证效果的具体命令,适合刚接触服务器运维的零基础用户。

先看懂 free 命令的每一列到底代表什么

执行最常用的命令:

free -h

典型输出如下:

              total        used        free      shared  buff/cache   available
Mem:           7.6Gi       2.1Gi       356Mi       128Mi       5.2Gi       5.0Gi
Swap:          2.0Gi          0B       2.0Gi

第一行是物理内存(Mem),第二行是交换分区(Swap,可以理解成内存不够时临时借用的硬盘空间)。
各列含义:

  • total:总内存。
  • used:已用内存,包含进程实际占用的部分。
  • free:完全空闲的内存,这个值小不代表内存不足。
  • shared:多个进程共享的内存,通常很小。
  • buff/cache:内核用于缓存磁盘数据的内存,这部分是可回收的。
  • available:估算出来的、新程序还能拿来用的内存,这个才是判断内存是否充足的关键。

判断内存是否不足,优先看 available 列,而不是 free 列。available 远大于你要启动的服务所需内存时,内存就是够用的。

用 available 列判断内存是否真的紧张

available 是内核综合了可回收的 buff/cache 之后给出的估算值,比 free 更贴近真实可用内存。
判断标准可以这样记:

  • availabletotal 的比例在 20% 以上,通常说明内存比较健康。
  • available 低于 total 的 10%,且 Swap 的 used 持续增长,说明内存已经偏紧。
  • available 接近 0,同时出现卡顿、OOM(内存耗尽杀进程)、服务被系统杀掉,才是真正的内存不足。

如果 free 很小但 available 很大,多半只是内核把空闲内存拿去做磁盘缓存了,这是正常现象,不用紧张。

想要更直观地持续观察,可以用:

free -h -s 3

这条命令每 3 秒刷新一次,方便观察 available 和 Swap 的变化趋势。

定位到底是谁在占用内存

确认内存偏紧后,下一步是找出高占用进程。
按内存占用从高到低排序:

ps aux --sort=-%mem | head -n 10

也可以打开交互式工具:

top

进入 top 后按 Shift + M,即可按内存占用排序。
重点看 %MEMRES 两列,RES 表示进程实际占用的物理内存。

找到异常进程后,先确认它是不是业务必需:

systemctl status 进程名

确认可以安全重启的,再执行:

systemctl restart 进程名

不要直接对不认识的进程执行 kill,先查清它属于哪个服务,避免误杀系统关键进程。

手动释放缓存与避坑提醒

buff/cache 占用高时,可以手动释放缓存做临时缓解:

sync
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'

第一条命令把脏数据写回磁盘,第二条释放页缓存、目录项和 inode 缓存。
释放后再次执行 free -h,会看到 free 变大、buff/cache 变小,但 available 变化通常不大——这恰好说明之前的内存本来就可用。

几个容易踩的坑:

  • free 小直接当成内存不足,然后盲目加内存或重启服务器。
  • 频繁执行 drop_caches,这会让磁盘读性能下降,因为缓存被清空了。
  • 只看一次结果就下结论,内存有波动,建议连续观察几分钟。
  • 忽略 Swap 的 used 增长,它往往是内存长期偏紧的早期信号。

验证与后续处理

调整或优化之后,用下面几条命令复查效果:

free -h
vmstat 1 5

vmstat 输出中的 siso 两列表示每秒从 Swap 换入换出的数据量。
如果它们长期为 0,说明内存压力已经缓解;
如果持续大于 0,说明内存依然吃紧。

如果排查后确认是业务本身内存需求超过了物理内存,可以考虑优化程序配置、限制进程内存上限,或者升级服务器规格。
具体规格和价格建议以你所用云厂商控制台的实际显示为准。

常见疑问

free 很小但 available 很大,需要处理吗?

不需要,这是内核利用空闲内存做缓存的正常表现,缓存可随时回收给新程序使用。

available 已经很低,但服务还能跑,算内存不足吗?

算临界状态。
此时应结合 Swap 使用和进程占用一起看,提前优化,避免触发 OOM。

释放缓存后 available 没怎么变,是命令没生效吗?

命令已生效,只是 available 本来就估算的是可回收内存,所以变化不明显,这反而说明内存并不紧张。

Swap 用满了怎么办?

Swap 用满通常意味着物理内存严重不足,应优先减少内存占用或增加物理内存,而不是单纯扩大 Swap。

记住核心结论:判断 Linux 内存是否不足,看 available 列和 Swap 变化趋势,而不是 free 列。
掌握这套判断方法后,再配合进程排查和效果验证,就能快速定位大多数内存问题。

分享到:
上一篇
Linux进程kill命令,强制停止卡死服务
下一篇
Linux iotop查看磁盘IO
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意