插件窝 干货文章 linux中vsz和rss有什么区别

linux中vsz和rss有什么区别

内存 进程 使用 物理 204    来源:    2025-05-03

在 Linux 系统中,VSZ(Virtual Set Size)和 RSS(Resident Set Size)是描述进程内存使用的两个关键指标,它们的核心区别如下:


1. VSZ(Virtual Set Size)

  • 定义:进程可访问的虚拟内存总量(包括实际使用的物理内存、交换分区、共享库、未使用的保留内存等)。
  • 特点
    • 包含进程申请的所有虚拟内存,无论是否被实际使用或映射到物理内存。
    • 可能包含共享库占用的内存(多个进程共享时会被重复统计)。
    • 单位通常是 KB(通过 ps/top 等命令查看时)。
  • 示例
    若进程通过 malloc(1GB) 申请了内存但未实际使用,这部分会计入 VSZ,但不会占用物理内存(不计入 RSS)。

2. RSS(Resident Set Size)

  • 定义:进程实际驻留在物理内存中的部分(不含交换分区 Swap)。
  • 特点
    • 仅统计当前占用的物理内存(包括共享库中实际被使用的部分)。
    • 若多个进程共享同一库,该库的物理内存会被分摊统计到各个进程的 RSS 中。
    • 单位通常是 KB
  • 示例
    进程实际使用的堆、栈、代码段等物理内存会被计入 RSS,但通过 mmap 映射的文件若未被访问则不会计入。

核心区别对比

指标 统计范围 是否包含共享内存 是否包含未使用的内存 是否受 Swap 影响
VSZ 虚拟内存总量(含未映射部分) 是(共享库重复统计) 包含 不受影响
RSS 物理内存占用(不含 Swap) 是(共享库分摊统计) 不包含 不受影响

常见工具中的显示

  • ps 命令

    ps aux | grep <进程名>
    
    • VSZ 列显示虚拟内存大小(默认单位 KB)。
    • RSS 列显示物理内存大小(默认单位 KB)。
  • top 命令

    • VIRT 列对应 VSZ。
    • RES 列对应 RSS。

实际应用场景

  • VSZ 过高:可能表示进程申请了大量虚拟内存但未实际使用(需检查内存泄漏或过度预分配)。
  • RSS 过高:说明进程实际占用物理内存较多,可能影响系统性能(需优化内存使用或扩容)。

扩展知识

  • smem 工具:可更精确统计共享内存分摊后的实际内存使用(USS/PSS/RSS)。
  • 内存泄漏排查:若 RSS 持续增长而 VSZ 不变,可能是物理内存泄漏;若两者同时增长,可能是虚拟内存泄漏。

通过理解这两个指标,可以更精准地分析进程的内存使用情况,从而进行性能调优或问题排查。