一文搞懂free -m:判断Linux内存空闲必须以available为准
在Linux运维工作中,free -m 是排查服务器内存状态最常用的命令。绝大多数新手甚至部分老手都会踩一个经典误区:盯着 free 列看剩余内存,看到free很小就以为服务器内存快要爆了。结论先行:Linux 查看剩余内存,绝对不要看 free 列,真正的空闲内存,以 available 列为准。本文带你彻底吃透 free -m 的输出逻辑,彻底搞懂 Linux 内存真实使用率判断标准。一、真实服务器 free -m 输出示例
total used free shared buff/cache availableMem: 772409 537021 5384 3886 230003 226559直观感受:free 仅剩 5GB 左右,看起来极度紧张。但实际情况:服务器内存非常充足,业务运行稳定无压力。二、每一列真实含义通俗讲解
1. total:总物理内存
2. used:已使用内存
包含进程运行内存、内核占用、缓存占用,不要单独拿来判断内存压力。3. free:纯空闲内存(几乎无参考价值)
真正彻底空空如也、什么都没存的内存。Linux 机制下,系统运行一会后,free 必然很小。4. buff/cache:缓存缓冲区内存
Linux 为了提速,会把磁盘文件、目录、inode、读写数据缓存到内存里。核心:这部分内存不是被占死,新程序需要内存时可以立刻释放。5. available:系统真实可用内存(唯一标准)
三、为什么 free 永远很小?(Linux核心设计哲学)
Linux 会自动把所有闲置内存全部利用起来做文件缓存、读写缓冲,用来加速磁盘IO,大幅提升系统性能。- buff/cache 很大 = 系统在利用内存提速
四、available 的计算逻辑(真实空闲内存)
available 是内核经过智能计算后的真实可用内存:available ≈ 纯空闲free + 可回收的buff/cache虽然 free 只有 5GB,但缓存里有大量可随时释放的内存,系统真正剩余可用内存高达 226GB。这就是为什么必须看 available,不能看 free。五、运维正确判断内存压力标准
1、优先看 available 占总内存比例:
2、辅助判断:Swap
- Swap used 持续上涨 = 内存真的不够用了
六、日常最容易踩的3个误区
误区1:free 小 = 内存不够
错!free 本来就不具备参考意义,是 Linux 正常机制。误区2:cache 太大需要手动清理
很多人执行:echo 3 > /proc/sys/vm/drop_caches清理缓存只会让 free 变好看,但系统重新读文件全部要走磁盘,业务性能大幅下降。内核会自动按需回收缓存,无需人工干预。误区3:used 高就是内存溢出
used 包含缓存占用,不能直接判定压力,唯一标准是 available。七、最终总结(运维标准答案)
- 判断 Linux 剩余内存、内存是否充足,只看 available,不看 free。
- free 列数值极小是 Linux 正常特性,不代表内存紧张。
- buff/cache 是提速资源,不是内存垃圾,无需清理。
- 真实可用内存 = available,是运维监控、告警、排查问题的唯一有效指标。
- 结合 Swap 使用情况,可百分百判断服务器真实内存压力。
👍 点赞支持 | ⭐ 关注不迷路