FREE(1) General Commands Manual FREE(1)

# 名称

free - 显示系统中空闲内存和已用内存的总量

# 概述

**free** \[*选项* ...]

# 描述

**free** 显示系统中空闲和已用的物理内存和交换内存的总量，以及内核使用的缓冲区和缓存的大小。这些信息通过解析 /proc/meminfo 获得。可以显示的列有：

**总计**

可使用的内存总量（/proc/meminfo 中的 MemTotal 和 SwapTotal）。这包括物理内存和交换内存，减去被保留的空间和内核二进制代码占用的空间。

**已用**

已用或不可用的内存（计算方式为 **总计** - **可用**）

**空闲**

未使用的内存（/proc/meminfo 中的 MemFree 和 SwapFree）

**共享**

这部分内存（大多）由 tmpfs 使用（/proc/meminfo 中的 Shmem）

**缓冲**

内核缓冲区使用的内存（/proc/meminfo 中的 Buffers）

**缓存**

页缓存和 slab 使用的内存（/proc/meminfo 中的 Cached 和 SReclaimable）

**缓冲/缓存**

**缓冲** 和 **缓存** 的和

**可用**

估计有多少内存可用于启动新应用程序，而无需交换。与 **缓存** 或 **空闲** 字段提供的数据不同，该字段考虑了页缓存，也考虑了并非所有可回收的内存 slab 都会被回收，因为有正在使用的项目（/proc/meminfo 中的 MemAvailable，在内核 3.14 上可用，在内核 2.6.27+ 上可模拟得到，否则与 **空闲** 相同）

# 选项

[**-b**, **--bytes**](#b)

使用字节显示内存大小。

[**-k**, **--kibi**](#k)

使用 KiB 显示内存大小。此为默认选项。

[**-m**, **--mebi**](#m)

使用 MiB 显示内存大小。

[**-g**, **--gibi**](#g)

使用 GiB 显示内存大小。

[**--tebi**](#tebi)

使用 TiB 显示内存大小。

[**--pebi**](#pebi)

使用 PiB 显示内存大小。

[**--kilo**](#kilo)

使用千字节显示内存大小。隐含启用 --si。

[**--mega**](#mega)

使用兆字节显示内存大小。隐含启用 --si。

[**--giga**](#giga)

使用吉字节显示内存大小。隐含启用 --si。

[**--tera**](#tera)

使用太字节显示内存大小。隐含启用 --si。

[**--peta**](#peta)

使用拍字节显示内存大小。隐含启用 --si。

[**-h**, **--human**](#h)

自动缩放所有输出字段的单位，使得最少显示三位数字，并显示单位。使用以下单位。

```


  B = 字节


  Ki = KiB (kibibyte)


  Mi = MiB (mebibyte)


  Gi = GiB (gibibyte)


  Ti = TiB (tebibyte)


  Pi = PiB (pebibyte)
```

如果没有显示单位，并且您有 EiB 以上的 RAM 或交换，则数字是以 TiB 为单位，并且各个列可能不能和表头对齐。

[**-w**, **--wide**](#w)

切换到宽模式。宽模式生成的行长度超过 80 个字符。在此模式下，**缓冲** 和 **缓存** 在两个单独的列中显示。

[**-c**, **--count** *N*](#c)

重复输出结果 *N* 次。需要同时使用 **-s** 选项。

[**-l**, **--lohi**](#l)

显示详细的低位内存和高位内存统计。

[**-L**, **--line**](#L)

在一行内显示输出，经常和 **-s** 选项同时使用，来重复显示内存统计信息。

[**-s**, **--seconds** *延迟*](#s)

连续地显示结果，每 *延迟* 秒一次。实际上， *延迟* 可以是任何的浮点数，小数点可以用 "." 或 ","。使用了 [**usleep**(3)](/man/os/procps/usleep.3) 以支持微秒精度的延迟。

[**--si**](#si)

使用千字节、兆字节、吉字节等（1000 的幂），而不是 KiB、MiB、GiB（1024 的幂）。

[**-t**, **--total**](#t)

增加一行，显示各列的总计。

[**-v**, **--committed**](#v)

增加一行，显示内存分配 (commit) 限制和已分配/未分配的内存量。该行的 **总计** 列将显示内存分配限制。此行在禁用了内存超分配 (overcommit) 的情况下有意义。在启用内存超分配的系统中，**空闲** 值可能暂时显示为负数。这并非 bug，而是超分配机制的正常表现，表示系统承诺的内存总量已超过其虚拟地址空间总量。负值反映了系统内存超分配的程度。

[**--help**](#help)

显示帮助。

[**-V**, **--version**](#V)

显示版本信息。

# 文件

/proc/meminfo

内存信息

# 错误

**共享** 列的值在 2.6.32 之前的内核中不可用，会被显示为零。

请将错误报告发送到 [procps@freelists.org](mailto:procps@freelists.org)。

# 参见

[**ps**(1)](/man/os/procps/ps.1), [**slabtop**(1)](/man/os/procps/slabtop.1), [**top**(1)](/man/os/procps/top.1), [**vmstat**(8)](/man/os/procps/vmstat.8).

2023-05-02 procps-ng

---

Document: free(1) from procps 4.0.7-r3 (Chainguard OS)
Source: https://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-4.0.7.tar.xz
