free 命令用于显示系统的内存使用情况,包括物理内存、交换空间(swap space)以及缓存和缓冲区。它可以帮助你监控系统的内存状态,发现潜在的内存问题。
一 基本用法
free [options]
二 常用选项及功能
- 显示内存使用情况
free
默认输出包括内存的总量、已用量、空闲量、共享内存、缓存和缓冲区的统计信息。
- 以 MB 或 GB 显示内存
free -m
free -g
- -m: 以 MB 为单位显示内存统计信息。
- -g: 以 GB 为单位显示内存统计信息。
- 显示内存的详细信息,包括缓存
free -h
- -h: 以人类可读的格式显示(自动选择适当的单位,如 KB、MB、GB)。
- 显示缓冲区和缓存的详细信息
free -s [秒数]
free -s 5
- -s [秒数]: 持续显示内存信息,每隔指定的秒数更新一次。
- 每 5 秒更新一次信息。
三 示例输出及解析
free -h
total used free shared buff/cache available
Mem: 7.7Gi 2.0Gi 3.7Gi 160Mi 1.9Gi 5.5Gi
Swap: 2.0Gi 0.0Gi 2.0Gi
- total: 总内存(或交换空间)量。
- used: 已用内存(或交换空间)量。
- free: 空闲内存(或交换空间)量。
- shared: 共享内存量。
- buff/cache: 被用作缓存和缓冲区的内存量。
- available: 可用内存量,指当前系统可以安全地分配的内存量。
四 常见问题
- used 和 free 的区别:used 包括所有已用内存,包括被缓存和缓冲区使用的内存;free 指的是完全未使用的内存。实际可用内存应该查看 available 列。
- buff/cache 的作用:Linux 使用空闲内存作为缓存,以加速数据访问,通常情况下,内存使用情况较高但性能良好是正常的。
五 内存统计字段之间的关系
- total = used + free + buff/cache
- total 是所有可用物理内存的总和。
- used 包括了操作系统和进程占用的内存,以及缓存和缓冲区占用的内存。
- free 是完全空闲的内存量。
- buff/cache 是空闲内存中被用于缓存和缓冲的部分。实际上,这部分内存可以在需要时被释放。
- available = free + buff/cache
- available 表示当前系统可以安全地分配给新进程的内存量。这包括了完全未使用的内存(free)和可以被回收的缓存和缓冲区内存(buff/cache)。
5.1 示例解释
假设 free -h 的输出如下:
total used free shared buff/cache available
Mem: 7.7Gi 2.0Gi 3.7Gi 160Mi 1.9Gi 5.5Gi
Swap: 2.0Gi 0.0Gi 2.0Gi
- total: 7.7 GiB
- used: 2.0 GiB
- free: 3.7 GiB
- shared: 160 MiB
- buff/cache: 1.9 GiB
- available: 5.5 GiB
从上面的输出可以看出:
- used = 2.0 GiB(实际使用的内存,包括 buff/cache 部分)
- free = 3.7 GiB(完全未使用的内存)
- buff/cache = 1.9 GiB(可以被回收的内存)
所以:
- available = free + buff/cache = 3.7 GiB + 1.9 GiB = 5.6 GiB
注意:available 的值为 5.5 GiB,可能由于计算舍入或系统的动态变化有轻微差异。