在Unix和类Unix操作系统中,free
命令是一个用于查看系统内存使用情况的基本工具,它能够显示系统物理内存、交换空间(Swap)以及缓冲区/缓存(Buffers/Cache)的总量、已使用量、空闲量以及共享内存等信息,帮助管理员和开发者快速了解当前系统的内存状态,从而判断是否存在内存不足的问题或优化内存使用效率,以下将详细介绍free
命令的功能、选项、输出解读及实际应用场景。

free
命令的基本语法与常用选项
free
命令的基本语法结构为:free [选项]
,通过不同的选项,可以自定义输出格式或显示更详细的信息,以下是常用选项及其作用:
选项 | 说明 |
---|---|
-b |
以字节(Bytes)为单位显示内存使用情况 |
-k |
以千字节(KB)为单位显示(默认) |
-m |
以兆字节(MB)为单位显示 |
-g |
以吉字节(GB)为单位显示 |
-h |
以人类可读的格式显示(如1K、234M、2G) |
-s |
指定刷新间隔(秒),持续监控内存变化 |
-c |
与-s 配合使用,指定刷新次数 |
-t |
显示内存总和使用情况的汇总行 |
-l |
显示低内存和高内存区域的信息(适用于NUMA系统) |
-V |
显示free 命令的版本信息 |
free -h -s 2
命令会以人类可读格式每2秒刷新一次内存使用情况,方便实时监控。
free
命令的输出解析
执行free
命令后,默认输出通常包含多列信息,以KB为单位,以下是一个典型的输出示例及各列含义:
total used free shared buff/cache available
Mem: 16280984 3254324 8123456 123456 4903204 11500000
Swap: 2097152 0 2097152
Mem(物理内存)
total
:系统物理内存的总量。used
:已使用的物理内存量(包括应用程序、内核缓冲区等)。free
:完全未被使用的物理内存量。shared
:被多个进程共享的内存量(如tmpfs文件系统)。buff/cache
:用于缓冲区和缓存的内存量(可被回收)。available
:可供新进程使用的内存估算值(包括可回收的缓存和缓冲区),比free
更准确。
Swap(交换空间)
total
:交换分区的总大小。used
:已使用的交换空间量(当物理内存不足时,系统会将部分数据移至Swap)。free
:未被使用的交换空间量。
关键指标说明
available
vsfree
:available
是更可靠的可用内存指标,因为它考虑了可回收的缓存和缓冲区,如果available
值持续较低(如低于总内存的10%),可能意味着内存紧张。buff/cache
的作用:Linux会主动将空闲内存用作文件缓存以提高I/O性能,因此free
值低并不一定代表内存不足,需结合available
判断。- Swap的使用:频繁使用Swap(如
used
值接近total
)会导致系统性能下降,因为磁盘I/O速度远低于内存。
free
命令的实际应用场景
-
快速检查内存使用状态
执行free -h
可直观查看内存总量及使用情况,(图片来源网络,侵删)total used free shared buff/cache available Mem: 16G 3.2G 8.1G 120M 4.9G 11G Swap: 2G 0B 2G
此处
available
为11G,表明内存充足;若available
仅剩几百MB,则需进一步排查耗内存进程。 -
实时监控内存变化
通过free -s 1 -c 5
每秒刷新一次内存信息,共显示5次,适合观察内存波动,在运行大型应用时,可通过此命令观察内存是否持续增长。 -
分析内存泄漏问题
若长时间运行后buff/cache
或used
持续上升且不回落,可能存在内存泄漏,可结合top
或pidstat
命令定位具体进程。 -
Swap空间优化
当Swap使用率过高时,可考虑增加Swap分区或调整vm.swappiness
参数(默认60),减少Swap的使用倾向。
注意事项
- 单位选择:默认以KB为单位,大内存系统建议使用
-h
或-m
提升可读性。 - NUMA系统:在多路NUMA架构服务器中,使用
-l
选项可查看各节点的内存分布,避免内存分配不均。 - 与
/proc/meminfo
的关系:free
命令的数据来源于/proc/meminfo
,后者包含更详细的内存信息,可通过cat /proc/meminfo
进一步排查。
相关问答FAQs
Q1: free
命令中的available
和free
有什么区别?为什么free
值很低但系统运行正常?
A1: free
表示完全未被使用的物理内存,而available
是可供新进程使用的内存估算值,包括可回收的缓冲区和缓存(buff/cache
),Linux会主动利用空闲内存作为文件缓存以提高性能,因此free
值低是正常现象,只要available
值充足(通常建议不低于总内存的10%),系统就不会因内存不足而卡顿。
Q2: 如何通过free
命令判断是否需要增加Swap空间?
A2: 若free
命令显示Swap的used
值持续接近total
,且物理内存的available
值长期低于总内存的10%,同时系统出现卡顿(如进程响应缓慢),则可能需要增加Swap空间,但需注意,Swap是物理内存的补充,频繁使用Swap会导致性能下降,优先应优化内存使用(如关闭不必要的服务或调整应用内存占用)。