linux查看虚拟内存需三步:先用swapon --show确认swap启用状态及设备详情,再用free -h结合vmstat 1 5观察swap使用量与换入换出频率,最后通过/proc/swaps和/proc/meminfo获取底层精确数据。

Linux 查看虚拟内存详情,核心就三件事:确认 Swap 是否启用、读取实时使用量、判断换入换出是否频繁。光看 free -h 不够,它只给总量和静态快照。
用 swapon --show 确认哪些 Swap 设备在运行
这个命令直接列出所有**已激活**的交换区域,比 cat /proc/swaps 更简洁,且默认包含关键字段:
-
NAME:路径(如/swapfile)或设备名(如/dev/sda2) -
TYPE:是file还是partition,影响 I/O 行为 -
SIZE和USED:当前分配与占用大小,单位自动适配 -
PRIO:优先级数值越大越先被使用;多个 Swap 区时,高优先级满载后才用低的
如果无输出,说明 Swap 完全未启用——此时 free -h 中的 Swap 行全是 0,vmstat 的 si/so 也必然为 0。
用 free -h 读 Swap 使用量,但别只盯 used
free -h 输出中 Swap 行的 used 值只是“当前被换出的页总量”,它不反映压力程度:
- 即使
used是 1.2G,若free还剩 2.8G,且vmstat的so长期为 0,说明只是历史残留,没新换出 - 若
used只有 500M,但vmstat 1 5显示so每秒写入 200KB,说明物理内存正持续告急,Swap 在高频周转 -
available字段只针对Mem行,Swap 行没有对应概念——Swap 的“可用”就是free列值
用 vmstat 1 5 抓 Swap 活动频率,这才是真实压力信号
vmstat 的 si(swap-in)和 so(swap-out)两列才是判断系统是否卡顿的关键:
- 执行
vmstat 1 5,连续 5 次采样,每秒刷新一次 -
si> 0 表示内核正在把磁盘上的页读回 RAM,进程可能等待;so> 0 表示正在把 RAM 里不活跃的页写到磁盘 - 只要其中一列在连续 3 次以上采样中 > 50 KB/s,就说明物理内存不足,Swap 不再是备用,而成了日常调度通道
- 注意单位:默认是 KB/s;加
-S M可改用 MB,避免小数点后一堆零干扰判断
查 /proc/swaps 和 /proc/meminfo 补充底层细节
当需要验证配置或排查异常时,这两个文件提供不可绕过的原始数据:
-
cat /proc/swaps显示挂载路径、类型、大小、优先级,和swapon --show内容一致,但更易被脚本解析 -
grep -E "Swap|MemAvailable" /proc/meminfo能快速定位:SwapTotal/SwapFree是精确字节数;MemAvailable是当前可立即分配的物理内存,低于总内存 10% 就该警觉了 - 如果
SwapCached值很高(比如 > 500MB),说明刚从 Swap 换回的页还在缓存中未释放,可能影响后续换出效率
真正难的是区分“Swap 已启用”和“Swap 正在拖慢系统”——前者是常态,后者才需干预。很多用户看到 free -h 里 Swap used 不为 0 就慌,其实只要 vmstat 的 si/so 安静,那点 used 只是内核留的余量,不是问题。











