«

Linux查看内存使用情况,free和vmstat命令详解

时间:2026-10-5 07:36     作者:emer     分类: 无


前言

服务器卡了,第一反应就是看看内存够不够用。很多人一看到 free 很少就慌了,觉得内存不够要扩容。其实 Linux 的内存管理和 Windows 不一样,free 少不代表内存真的不够。本文就讲一下怎么用 free 和 vmstat 两个命令正确查看内存使用情况。

free 命令

基本用法

直接输入:

free

输出示例:

              total        used        free      shared  buff/cache   available
Mem:        8165036     4000000     2000000       50000     2165036     4000000
Swap:       2097148           0     2097148

输出详解

列 含义
total 总内存大小
used 已使用的内存
free 完全空闲的内存
shared 共享内存
buff/cache 缓存和缓冲区占用的内存
available 真正可用的内存(重点看这列)

重点:available 才是真正可用的内存

很多人只看 free 列,看到只剩几百M就慌了。其实 Linux 会把空闲内存都用来做缓存(buff/cache),这些缓存是可以随时回收的。

看 available 列才是真正可用的内存。 比如上面的例子,free 只有2G,但 available 有4G,说明还有4G内存可以用。

free 常用参数

free -h

以人类可读的格式显示(自动用G/M/K单位):

              total        used        free      shared  buff/cache   available
Mem:           7.8Gi       3.8Gi       1.9Gi        50Mi       2.1Gi       3.8Gi
Swap:          2.0Gi          0B       2.0Gi
free -m

以MB为单位显示。

free -g

以GB为单位显示。

free -s 5

每5秒刷新一次。

free -c 3

总共显示3次后退出。

vmstat 命令

基本用法

直接输入:

vmstat

输出示例:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 2000000  50000 2100000    0    0    10    20   100   50  5  2 92  1  0

输出详解

procs 进程部分:

memory 内存部分:

swap 交换分区部分:

io 磁盘I/O部分:

cpu CPU部分:

vmstat 常用参数

vmstat 1

每秒刷新一次,按 Ctrl+C 退出。

vmstat 1 5

每秒刷新一次,总共刷新5次。

vmstat -s

显示内存统计信息。

怎么判断内存够不够用

看 available 够不够

free -h

看 available 列,如果 available 还有几百M以上,说明内存够用。

看 swap 用了多少

free -h

如果 Swap 的 used 列有数值,说明物理内存不够用了,系统在把内存数据换到磁盘上。这时候性能会大幅下降。

看 si 和 so

vmstat 1

如果 si 和 so 列长期不为0,说明系统在频繁换页,内存不够用了。

实际排查案例

案例1:内存够不够

free -h

看 available 列,如果还有几个G,说明内存够用。

案例2:系统变慢,怀疑内存不足

vmstat 1

看 si 和 so 是不是很高,如果很高说明在频繁换页,内存不够。

案例3:哪个进程占内存最多

top

按 M 键按内存排序,看哪个进程占的内存最多。

常见坑

坑1:把 free 少当成内存不足

Linux 的内存管理机制和 Windows 不一样,空闲内存都用来做缓存了,buff/cache 那部分是可以随时回收的。看 available 列才是真正可用的内存。

坑2:看到 swap 用了就慌

如果 swap 用了一点,但 si 和 so 都是0,说明那是历史遗留的,不影响性能。只有当 si 和 so 长期不为0的时候才是问题。

坑3:内存不够就随便扩容

内存不够的原因可能有很多:

先找出原因,再决定要不要扩容。

总结

查看内存使用情况的核心命令:

  1. free -h:快速看内存总览,重点看 available 列
  2. vmstat 1:实时监控内存和换页情况,看 si 和 so
  3. top 按M:看哪个进程占内存最多

记住一个原则:Linux 的 free 少不是问题,available 少才是问题。

遇到问题加QQ23979811 协助处理

标签: Linux 内存查看 free命令 vmstat swap