free命令结果输出详解
其他相关
JVM调优实战 - deyang - 博客园
命令Linux\MySQL\Java - deyang - 博客园
总结:
total = used(包括 shared) + free + buff/cache
available ≈ free + (部分可回收的 buff/cache)
free命令输出详解

在 free 命令的输出中,各内存字段之间的关系如下:
1. 内存(Mem)行的字段关系
基本公式:
-- 总内存 = 已用内存 + 空闲内存 + 缓冲区/缓存内存
total = used + free + buff/cache
验证数据:
total = 62372 MB
used = 50361 MB
free = 7866 MB
buff/cache = 4144 MB
计算:
50361 (used) + 7866 (free) + 4144 (buff/cache) = 62372 (total) ✅
2. used 内存包含哪些部分?
used 内存包括:
- 应用程序使用的内存(如运行中的程序、服务)
- 内核使用的内存
- 共享内存(shared)(这部分也在
used中)
但 used 不包括 buff/cache,因为缓冲区和缓存是单独列出的。
3. available 内存的计算
available 表示系统估算的可用于新程序的内存,计算方式:
available ≈ free + (部分可回收的 buff/cache)
- 并不是所有
buff/cache都能被回收(如正在使用的磁盘缓存、内存映射文件等)。 - 内核会根据当前内存压力动态计算可回收的部分。
为什么
available可能比free小?
问题:某一次free -m查询发现available比free小是为什么
- 如果系统认为部分
free内存需要保留(如内核预留或未来缓存需求),available可能略低于free。shared内存(3136 MB)可能被多个进程占用,无法全部计入available。
4. shared 内存的影响
shared是被多个进程共享的内存(如tmpfs、共享库等)。- 它包含在
used中,但不直接参与total = used + free + buff/cache的计算,因为它是used的子集。
5. Swap 行的字段关系
Swap total = Swap used + Swap free
- 如果你的
Swap全是 0,说明未启用交换分区(常见于内存充足的服务器或某些云实例)。
总结表
| 字段 | 含义 | 组成关系 |
|---|---|---|
total |
总物理内存 | total = used + free + buff/cache |
used |
已用内存(不含缓存) | 包括应用内存 + shared |
free |
完全未使用的内存 | — |
shared |
共享内存(含在 used 中) |
— |
buff/cache |
缓冲区和缓存内存 | 可部分回收 |
available |
实际可用内存 | ≈ free + 可回收的 buff/cache |
关键结论
total = used + free + buff/cache是核心公式。available≤free + buff/cache,因为部分缓存可能不可回收。shared包含在used中,不影响total的计算。- 如果
available远低于free,可能是由于共享内存或内核预留,部分free内存需要保留。

浙公网安备 33010602011771号