服务器free -h里面都代表了什么,free -h各字段含义详解

free -h 里的 total 是物理内存总量,used 是传统计算出的已用内存,free 是彻底没被碰过的内存,shared 是共享内存,buff/cache 是内核拿来当磁盘缓存的“可让位”空间,available 才是真正还能分配给新进程的内存,一句话:服务器内存够不够,先看 available,别只盯着 free。

在实际运维里,很多误判都来自把 free 当成唯一可用内存,free -h 一旦显示 free 只剩几百 MB,就以为机器要挂了,Linux 的内存调度思路和 Windows 不太一样,它会把空闲内存尽量拿去做缓存,下面把每一列拆开讲清楚。

服务器free -h各列含义:把内存当成一套合租房

先看一条常见的 free -h 输出:

              total        used        free      shared  buff/cache   available
Mem:           7.6Gi       2.1Gi       1.2Gi       125Mi       4.3Gi       5.1Gi
Swap:          2.0Gi          0B       2.0Gi

这张表可以理解成一套合租房,total 是整套房面积,used 是已经住人的面积,free 是完全空置的房间,shared 是公共区域,buff/cache 是堆在房间里但随时能腾出来的书和箱子,available 则是把书和箱子整理后真正能住人的面积。

列名 含义 合租类比
total 物理内存总大小 整套房总面积
used 传统口径已用,total 减去 free 再减去 buff/cache 已经住人的面积
free 完全未被使用的内存 完全空置的房间
shared 多个进程共享的内存,常见于 tmpfs 和共享内存段 公共区域
buff/cache 内核用于磁盘缓存的内存,可回收 堆在房间里的书和箱子
available 估算可供新进程使用的内存,包含可回收缓存 收拾一下能住人的面积

这里的 used 并不是所有物理内存占用,很多监控工具早期只读 used 这一列,容易产生误报,free -h 的 used 计算逻辑是 total – free – buff/cache,换句话说,buff/cache 没有被算进 used,但它确实被内核临时占用了,因此光看 used 和 free,都不足以判断剩余可用内存。

Swap 行也需要单独理解,Swap 是交换分区,用磁盘空间模拟内存,当物理内存紧张时,内核会把一部分不常用的内存页换出到 Swap,Swap 的 used 为 0B 时说明系统没有发生换页,或者还没有到使用交换分区的地步。

服务器free -h里面都代表了什么,free -h各字段含义详解

free -h available和free的区别:空着和能住进去是两回事

很多人第一次看到 7.6Gi 总内存里 free 只有 1.2Gi,会立刻紧张,但同一行 available 显示 5.1Gi,为什么差这么多?

因为 free 只代表完全没有被使用的内存,available 则会加上 buff/cache 中可以安全回收的部分,buff/cache 里的多数缓存页是干净的,内核可以随时把它们释放给新进程使用,free 是“空着”,available 是“算上能马上回收的缓存,到底还能匀出多少”,两者完全是两个概念。

available 也并不是 free 加 buff/cache 的总和,buff/cache 里可能包含脏页,也就是数据还没写回磁盘的缓存页,这部分不能立刻回收,必须先写回磁盘,内核在估算 available 时,会剔除不能在短时间内安全回收的内存,available 通常小于 free + buff/cache,但远大于 free。

日常判断内存是否充足,直接看 available 更符合实际,比如跑 Java 应用时 free 可能长期只剩 800M,但 available 还有 4G 以上,这种情况多数不需要加内存,反过来,available 已经掉到几十 MB,即使 free 看起来还有一点,系统也可能马上触发内存回收和 Swap 换页。

linux free -h命令详解:buff/cache不是内存小偷,是图书管理员

Linux 有一个很明显的特征:内存越用越“满”,刚开机时 free 很大,运行一段时间后 buff/cache 涨得很快,free 下降,这不是内存泄漏,而是内核在主动利用空闲内存。

buff/cache 主要包含两部分:

  • buffers:用于块设备元数据缓存
  • cache:用于文件内容页缓存

可以把它理解成图书管理员,你把常用的书从书库搬到桌面,虽然桌面堆满了,但下次找书速度极快,Linux 会把读过的文件内容放进内存,下次读取直接命中缓存,不用再碰磁盘,对于磁盘性能较弱的服务器,这种缓存对 IO 提升非常明显。

当新进程需要内存而 free 不够时,内核会先回收干净的缓存页,这个过程对缓存内容没有伤害,因为数据本来就在磁盘上,如果还不够,内核才会把脏页写回磁盘,然后回收,只有在缓存回收后仍然无法满足请求时,系统才会动用 Swap,buff/cache 不是内存小偷,它更像一个会自动腾地方的图书管理员。

服务器free -h里面都代表了什么,free -h各字段含义详解

CentOS free -h buff/cache是什么意思:缓存什么时候会还回来

CentOS 7、8、9 以及 Rocky Linux、AlmaLinux 上,free -h 的输出含义完全一致,因为这些系统都使用 procps-ng 提供的 free 命令,CentOS 用户装完系统后常常发现 buff/cache 越跑越高,这属于正常现象。

缓存会在以下几种情况下还回来:

  • 新进程申请内存,free 不足时,内核自动回收干净缓存页
  • 脏页写回磁盘后被回收
  • 内存压力升高,系统触发内存回收机制
  • 手动执行释放缓存命令

手动释放 buff/cache 的操作路径如下:

sync
echo 3 > /proc/sys/vm/drop_caches

drop_caches 后面的数字有不同含义:

  • 1:释放 page cache
  • 2:释放 dentries 和 inodes
  • 3:释放 page cache、dentries 和 inodes

这个命令通常用于测试环境或需要临时释放大量缓存做基准测试的场景,生产环境不建议频繁执行,一旦缓存被清空,后续所有磁盘读取都要重新落到物理盘上,IO 压力会明显上升,系统变慢的可能性反而更大,缓存自己会在合适的时候还回来,一般不需要人为干预。

怎么分析free -h结果判断内存够不够:盯住available和swap的脸色

运维人员最常问的问题就是:这台服务器内存到底够不够?判断方法并不复杂,关键是不要只看 free。

  • 先看 Mem 行的 available,如果长期只剩几十 MB 到一两百 MB,并且还在继续下降,说明物理内存已经吃紧。
  • 再看 Swap 的 used,Swap 开始被使用并不一定是坏事,但 Swap used 持续增长,si/so 频繁出现,就是典型的物理内存不够信号。
  • 用 vmstat 1 5 观察 si 和 so 两列,si 是换入,so 是换出,长期非零且数值较大,说明系统在频繁换页。
  • 用 top 或 htop 查看进程内存占用,找到异常增长或泄漏的进程。

服务器free -h里面都代表了什么,free -h各字段含义详解

判断维度 健康状态 紧张状态
available 明显高于日常告警阈值 长期只剩几十 MB 到一两百 MB
Swap used 基本为 0 或很少 持续增长,且 si/so 频繁
buff/cache 高但稳定 缓存已被压缩,仍频繁换页
free 低但 available 高 free 和 available 都低

行业共识认为,判断物理内存压力不能只看 free,把 available 和 Swap 吞吐结合起来才更接近真实,很多服务器在正常运行时 free 都会很低,但只要 available 充足,系统就不会因为内存问题卡顿。

实操命令扩展:把free -h放进日常巡检

除了 free -h,还有几个常用命令可以组合使用:

  • free -h:快速查看内存总览
  • free -m:以 MB 固定单位显示,适合脚本取数
  • free -g:以 GB 固定单位显示
  • free -s 3:每 3 秒刷新一次,适合观察变化
  • watch -n 1 free -h:实时监控内存变化
  • cat /proc/meminfo:查看更详细的内存字段,包括 MemAvailable、Dirty、SwapCached 等
  • vmstat 1 5:观察 Swap 换入换出情况

free 命令的数据来源是 /proc/meminfo,available 对应 MemAvailable,buff/cache 对应 Buffers、Cached 和 SReclaimable 的合计,看原始文件能获得比 free -h 更细的信息,比如脏页数量、活跃缓存和非活跃缓存等。

再看服务器 free -h,先看 available,再看 Swap 和 si/so,free 低不是问题,available 低才是。

free -h常见问题:服务器free -h里shared和buff/cache代表什么?

free -h里available为什么比free大很多?

available 比 free 大很多,是因为 available 会把 buff/cache 中可安全回收的缓存页算进去,free 只是完全未使用的内存,而 buff/cache 中的干净缓存可以随时释放给新进程使用,available 通常比 free 大,尤其是磁盘读写频繁的服务器上差距更明显。

free -h结果swap used不为0是不是内存不够?

Swap used 不为 0 不等于内存不够,Linux 内核会根据 vm.swappiness 参数决定是否把不活跃的内存页换到 Swap,有时候即使物理内存还有剩余,内核也会提前换出一些长期不用的页面,真正需要警惕的是 Swap used 持续增长,vmstat 中 si/so 长期频繁非零,那才说明物理内存已经不能稳定满足工作负载,系统在频繁换页,性能会明显下降。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/820266.html

赞 (0)
上一篇 2026年9月14日 12:19
下一篇 2026年9月14日 12:28

相关推荐

  • web服务器是什么意思?知乎上如何通俗理解?

    Web服务器就是专门处理HTTP请求、返回网页内容的软件,它运行在实体服务器或云主机上,用户用浏览器访问网址时,第一个接活的就是它,在知乎上搜“web服务器是什么意思”,常见困惑不是“它是不是电脑”,而是“它和数据库服务器、应用服务器到底怎么分”,先弄懂web服务器在整条请求链路里的位置当你打开浏览器输入 ht……

    2026年9月19日
    0773
  • 手机dns的正确服务器是什么,怎么设置最快最安全?

    手机DNS的正确服务器并没有统一答案,但绝大多数用户的最佳选择是阿里云DNS(223.5.5.5)、腾讯DNSPod(119.29.29.29)或114DNS(114.114.114.114),具体取决于你的运营商网络和访问需求,手机DNS到底是什么DNS好比手机上网的通讯录,当你输入网址时,手机会先通过DNS……

    2026年10月5日
    02275
  • 生存服务器该干什么用,我的世界生存服务器新手前期该做什么?

    生存服务器的核心用途是一台24小时不关机的公共存档主机:它让你的原版生存、建筑、红石和多人协作不因主机下线而中断,并且能通过插件实现领地、备份和经济规则,如果你只想体验一次性快餐副本,生存服务器并不适合你,生存服务器怎么玩才有长期存档价值生存服务器最怕的不是配置差,而是目标错位,你把它当成“开一次黑就散的快餐服……

    2026年9月16日
    0993
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • php的waf怎么用,php waf配置教程详解

    PHP的WAF(Web应用防火墙)是保障网站数据安全、拦截恶意流量的核心防线,其核心价值在于精准识别攻击特征与极低误杀率的平衡,正确使用PHP WAF,绝非简单的安装开启,而是需要结合业务逻辑进行深度配置、性能调优与实时监控,构建起“检测-拦截-响应”的动态安全闭环,对于大多数企业级应用而言,WAF应作为纵深防……

    2026年3月26日
    02705

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(2条)

  • 美鱼8557的头像
    美鱼8557 2026年9月14日 12:29

    这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于先看的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!

  • sunny861love的头像
    sunny861love 2026年9月14日 12:31

    这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于先看的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!