人人都会AI编程

free:内存使用详情

更新时间:2026-07-12

free 命令是 Linux 上最直接的查看内存使用情况的工具。它从 /proc/meminfo 文件中读取数据,并以简洁的格式展示物理内存、交换空间的总量、已用量、空闲量等信息。在日常运维、性能诊断和容量规划中,free 往往是第一个被执行的命令。

常用选项

  • free:不带任何选项会以千字节(KB)为单位显示,默认可能显示较长的数字。
  • free -h--human,以人类可读的格式显示(自动调整为 KB、MB、GB),最常使用。
  • free -s 5--seconds,每 5 秒刷新一次,适合持续观察内存变化趋势。
  • free -t--total,在最后多显示一行“总物理内存+交换空间”的合计。

输出字段详解
执行 free -h 后,通常会看到类似以下的输出:

              total        used        free      shared  buff/cache   available
Mem:           7.6G        2.1G        3.2G        123M        2.3G        5.1G
Swap:          2.0G        0.0B        2.0G
  • total:物理内存总量。
  • used:已被程序直接占用的内存量(不含 buffer/cache)。
  • free:完全未被使用的内存(在较新版本中,这个值通常很小并不意味着内存不够)。
  • shared:被多个进程共享的内存(通常是 tmpfs 共享内存,/dev/shm 等)。
  • buff/cache:被内核用于文件系统缓存和缓冲区的内存。这部分可以随时被回收给应用程序使用,所以它不能算作“已用”。
  • available:这是最关键的字段!它估算出在不触发交换空间的情况下,可以直接分配给新启动的进程的内存大小。它考虑了可以回收的缓存和一部分共享内存,因此 available 比简单的 free + buff/cache 更精确。如果这个值很小,说明系统确实内存紧张。
  • Swap 行:展示交换空间(通常为磁盘上的交换分区或交换文件)的总量、已用量和空闲量。如果 swap used 持续增长,往往意味着物理内存已经捉襟见肘,系统在频繁地把不活跃的数据换出到磁盘,导致整体性能下降。

实用场景与解读要点

  1. 快速判断内存是否充足:不要只盯着 free 列。一个运行正常的 Linux 系统,free 往往会很小,因为内核会积极利用剩余内存来缓存文件系统数据(buff/cache)。真正要关注的是 available 是否远大于零。例如上面示例中 available 为 5.1G,物理内存总量 7.6G,系统非常健康。
  2. 检查是否有内存泄漏:通过 free -s 2 持续观察 used 列(或用 available 的递减)来判断是否有进程在持续吞食内存。同时结合 topps 命令按内存排序,定位嫌疑进程。
  3. 判断是否需要加内存:如果 available 长期低于物理内存的 10%~15%,且交换空间使用量持续增加,应用程序响应变慢,就说明内存已经成为瓶颈,应考虑扩容或优化程序内存占用。
  4. /proc/meminfo 的关系free 的数据取自内核伪文件系统。如果你需要更精细的数据(如脏页大小、Slab 内存、页表大小等),可以直接查看 /proc/meminfo。但对日常巡检和告警脚本来说,free -h 已经足够。

一行常用命令组合

# 持续监控内存并高亮变化
watch -n 1 free -h

或者使用更现代化的替代工具,如 htop(图形界面)或 vmstat(综合统计),但 free 始终是脚本输出和远程维护时最直观可靠的选择。它不依赖图形终端,在任何 SSH 环境下都能立即给出内存健康状况的快照。