在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 2097152Mem(物理内存)
total:系统物理内存的总量。used:已使用的物理内存量(包括应用程序、内核缓冲区等)。free:完全未被使用的物理内存量。shared:被多个进程共享的内存量(如tmpfs文件系统)。buff/cache:用于缓冲区和缓存的内存量(可被回收)。available:可供新进程使用的内存估算值(包括可回收的缓存和缓冲区),比free更准确。
Swap(交换空间)
total:交换分区的总大小。used:已使用的交换空间量(当物理内存不足时,系统会将部分数据移至Swap)。free:未被使用的交换空间量。
关键指标说明
availablevsfree: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会导致性能下降,优先应优化内存使用(如关闭不必要的服务或调整应用内存占用)。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/415978.html<
