Linux 内存告急?别慌!free 命令精准诊断内存问题
free是 Linux 系统中用于实时监控内存使用情况的命令工具,可显示物理内存(RAM)、交换空间(Swap)及内核缓冲区的总量、已用量、空闲量等关键指标。其数据来源于文件,是系统性能调优和故障排查的基础命令。
你好,我是老成。
一天搞定一个 Linux 命令,今天搞定 free 命令。
命令介绍
free 是 Linux 系统中用于实时监控内存使用情况的命令工具,可显示物理内存(RAM)、交换空间(Swap)及内核缓冲区的总量、已用量、空闲量等关键指标。其数据来源于 /proc/meminfo 文件,是系统性能调优和故障排查的基础命令。
作用
- 实时监控:查看物理内存与交换空间的分配状态(总量、已用、空闲)。
- 性能诊断:识别内存瓶颈(如内存不足、Swap 过度使用),避免系统卡顿或崩溃。
- 优化决策:根据缓存(
buff/cache)和可用内存(available)调整应用配置或扩容内存。
语法
free [选项]
1)常用选项
| 选项 | 说明 |
|---|---|
-h |
自动转换单位(KB/MB/GB) |
-m/-g |
指定单位为 MB 或 GB |
-t |
增加 总计行(物理内存 + Swap 总和) |
-s <秒数> |
周期性刷新输出(如 -s 5 每 5 秒更新) |
-c <次数> |
结合 -s 指定刷新次数(如 -s 2 -c 3 执行 3 次) |
-w |
宽输出模式,完整显示所有列 |
-l |
显示详细高低内存统计(仅某些内核支持) |
2)参数解析

| 字段 | 含义 | 关键说明 |
|---|---|---|
total |
系统总物理内存量 | 系统实际安装的 RAM 大小。 |
used |
已使用的内存 | 包含应用程序占用的内存 + 部分缓存(buffers/cache)。 |
free |
完全空闲的内存 | 未被任何进程或缓存使用的内存(通常较小,因 Linux 会利用空闲内存作缓存)。 |
shared |
多进程共享的内存(如共享库、tmpfs) | 一般与 /dev/shm 或进程间通信相关。 |
buffers |
块设备缓冲区内存 | 缓存磁盘块元数据(如文件属性),加速写入操作。 |
cache |
文件内容缓存 | 缓存磁盘文件内容(如频繁读取的文件),加速后续访问。 |
available |
应用程序可用内存(核心指标) | ≈ free + 可回收的 buffers/cache,反映系统可分配给新程序的内存。 |
实际使用
- 基础监控:
free -h # 可读性强(推荐日常使用)
free -m # 以 MB 为单位(适合精确监控)
- 周期性监控内存变化(如排查内存泄漏):
free -s 3 -c 5 # 每 3 秒刷新,共执行 5 次
- 显示内存总和(物理内存 + Swap):
free -th # 输出末尾添加总计行
total used free ...
Total: 20G 8.5G 11G
- 排查缓存影响:
若available过低但buff/cache高,可手动释放缓存(生产环境慎用):
sync; echo 1 > /proc/sys/vm/drop_caches # 释放缓存

Q&A
1)free 命令 Swap 显示使用量为 0,是否正常?
答:正常。未启用 Swap 分区时显示 0。若需启用,使用 swapon 命令
2)available 远小于 free + buff/cache,为什么?
答:内核预留部分内存(如低水位线),避免内存压力时立即回收
3)物理内存充足,为何 Swap 使用量仍在增长?
答:可能内核策略(如 swappiness 参数值过高),可通过调整降低 Swap 使用倾向:
一般不会使用swap分区内存,性能不好
sysctl vm.swappiness=10 # 默认 60,值越低越少用 Swap
4)虚拟化环境中 total 显示为 0,如何解决?
答:资源报告异常,检查虚拟机配置(如内存分配),或改用容器专用命令(如 docker stats)
5)buffers 和 cached 有何区别?
答:
- buffers:缓存磁盘块元数据(如文件属性)
- cached:缓存文件内容,加速读写
6)free 和 available 核心区别?
答:
- free,是「物理上未被占用」的内存,直接可用。如果
Free很低,但Available很高,说明系统在高效利用缓存,无需担心内存不足。 - Available,是「逻辑上可用」的内存,包含
Free+ 可回收的缓存/缓冲区(如磁盘缓存、页面缓存等)。当程序需要内存时,系统会优先使用Free内存;不足时,自动释放缓存供程序使用。这是判断内存是否够用的关键指标。
7)如何判断内存是否不足?
答:
- 关注
Available:如果Available接近Total,说明内存充足。 - 无需过度在意
**Free**:Linux 会尽量利用内存做缓存,Free低是正常现象。
END
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)