free命令是Linux系统中查看内存使用情况的核心工具,通过它可以快速了解系统物理内存和交换空间(Swap)的分配、使用及空闲状态,掌握free命令结果的解读,对于系统性能监控、故障排查至关重要,本文将结合具体输出示例,详细解析free命令各字段的含义,并提供实际场景下的分析方法。

free命令的基本语法与常用选项
在深入解读结果前,需先了解free命令的基本用法,其常用语法为:free [选项]
核心选项包括:
-h:以人类可读格式显示(如KB、MB、GB),默认为KB;-m:以MB为单位显示;-g:以GB为单位显示;-s:定时刷新,如free -s 2每2秒刷新一次;-t:显示内存总和行,汇总物理内存和Swap的总计;-c:指定刷新次数,如free -s 1 -c 5每秒刷新,共5次。
默认情况下,free命令仅显示物理内存和Swap的信息,加入-t后会额外汇总总内存情况。
free命令结果的核心字段解析
执行free -h(推荐使用人类可读格式)后,输出通常包含两大部分:物理内存(Mem)和交换空间(Swap),以及可选的内存总和(Total),以下以典型输出为例,逐字段说明:
| 列名 | 含义说明 | 单位 | 示例值 | 注意事项 |
|---|---|---|---|---|
| total | 系统总内存(物理内存或Swap)的总量 | GB | 7G | 物理内存总量由硬件决定,Swap总量由管理员配置(如swapfile或Swap分区)。 |
| used | 已使用的内存量 | GB | 1G | 包含应用程序实际占用(App)+ 缓冲/缓存(Buff/Cache)。 |
| free | 完全空闲的内存量 | GB | 2G | 纯空闲内存,未被任何进程或系统缓存使用。 |
| shared | 被多个进程共享的内存量(如tmpfs、共享内存段) | GB | 0M | 现代系统中占比通常很小,可忽略不计。 |
| buff/cache | 缓冲(Buff)和缓存(Cache)的总量 | GB | 4G | Buff:用于存储块设备读写数据的缓冲;Cache:用于加速文件访问的页缓存。 |
| available | 实际可供新进程使用的内存量(比free更准确) |
GB | 5G | 系统会预留部分内存,available才是“真正可用”的内存,核心参考指标。 |
物理内存(Mem)行
物理内存是系统实际可用的内存,重点关注used、free、buff/cache和available的关系:
used = App + buff/cache:used不仅包含进程占用的内存,还包含系统主动使用的缓存(Linux会尽量将空闲内存用作缓存,以提高性能)。available ≈ free + buff/cache - reserved:available是系统动态计算的可供新进程使用的内存,它会预留一部分内存给内核(如slab缓存),因此available通常大于free,若available持续低于500MB,可能预示内存紧张。
交换空间(Swap)行
Swap是硬盘上的一块区域,当物理内存不足时,系统会将不常用的内存数据换出到Swap,释放物理内存给急需的进程,解读Swap时需关注:

used过高:若Swap使用率持续超过50%,且物理内存的available长期偏低,说明物理内存不足,系统频繁换页,可能导致性能下降(如应用卡顿)。free过高:若Swap几乎未使用(free接近total),说明物理内存充足,无需担心。
内存总和(Total)行(需-t选项)
汇总物理内存和Swap的总计,方便快速查看系统总内存资源。
实际场景下的内存状态分析
结合上述字段,可通过以下场景判断系统内存是否健康:
场景1:内存充足(健康状态)
- 物理内存:
available> 总内存的50%,buff/cache较高但可接受(Linux默认利用空闲内存作缓存),used中App占比合理(可通过ps aux --sort=-%mem查看进程内存占用)。 - Swap:
used接近0,系统未使用Swap。
示例:
total used free shared buff/cache available
Mem: 7.7G 3.1G 1.2G 1.0M 3.4G 4.5G
Swap: 2.0G 0.0B 2.0G
分析:available(4.5G)占总内存(7.7G)的58%,Swap未使用,内存充足。
场景2:内存紧张(需关注)
- 物理内存:
available< 500MB,buff/cache占比高但App占用也高(如数据库、大内存应用),used中App占比持续上升。 - Swap:
used缓慢增长,说明系统开始使用Swap换页。
示例:
total used free shared buff/cache available
Mem: 7.7G 6.8G 0.3G 1.0M 0.6G 0.4G
Swap: 2.0G 1.2G 0.8G
分析:available仅0.4G,Swap已使用1.2G,说明物理内存不足,需检查高内存进程(如top命令排序后优化)。

场景3:缓存占用高但内存充足(正常)
- 物理内存:
buff/cache占比高(如60%以上),但available仍充足(>总内存50%),used中App占比较低。 - Swap:未使用。
示例:
total used free shared buff/cache available
Mem: 7.7G 2.0G 0.5G 1.0M 5.2G 5.0G
Swap: 2.0G 0.0B 2.0G
分析:buff/cache达5.2G,但available仍有5.0G,说明系统将空闲内存用作缓存,内存充足,无需干预。
FAQs
Q1:free命令中的available和free有什么区别?为什么available通常比free大?
A:free是纯空闲内存,未被任何进程或系统模块使用;而available是系统动态计算的可供新进程使用的内存,它等于free + buff/cache - 系统预留内存,Linux会主动将空闲内存用作缓存(buff/cache)以提高性能,因此buff/cache会占用部分free,但这些缓存可在进程需要时被释放,所以available通常大于free。available是判断内存是否紧张的核心指标,free则仅代表“完全未使用”的内存。
Q2:为什么系统内存中buff/cache很高,但实际运行并不卡顿?
A:buff/cache包含缓冲(Buff)和缓存(Cache),是Linux系统优化内存使用的重要机制:
- 缓冲(Buff):用于存储块设备(如磁盘)的读写数据,减少磁盘I/O次数;
- 缓存(Cache):用于缓存文件数据,加速文件访问(如读取频繁的文件会被缓存到内存)。
当进程需要内存时,系统会优先释放buff/cache(通过kswapd内核线程或直接回收),因此只要available充足,buff/cache高不会影响性能,相反,buff/cache高说明系统在高效利用内存,属于正常现象,只有当buff/cache高且available低时,才可能预示内存不足。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/16281.html