🎬 HoRain 云小助手:个人主页

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

目录

⛳️ 推荐

Linux进程内存指标详解:VSS、RSS、PSS、USS及查看方法

1. 内存指标定义

2. 查看内存指标的方式

2.1 使用 ps 命令查看VSS和RSS

2.2 使用 top 或 htop

2.3 通过 /proc/[pid]/smaps 文件

2.4 使用 pmap 命令

2.5 工具 smem 统计PSS和USS

3. 各指标应用场景

4. 内存泄漏排查示例

5. 指标对比总结

6. 注意事项


 


1. 内存指标定义
指标全称描述特点
VSSVirtual Set Size进程申请的虚拟内存总量(含共享库、未实际使用的内存)包含所有虚拟地址空间,可能远大于实际物理内存占用
RSSResident Set Size进程实际占用的物理内存(含共享库)所有进程的RSS总和可能超过系统总内存(共享内存重复计算)
PSSProportional Set Size按比例计算的物理内存(共享内存均分到各进程)更准确反映系统整体内存压力
USSUnique Set Size进程独占的物理内存(不含共享内存)直接衡量进程实际消耗的内存,用于排查内存泄漏

2. 查看内存指标的方式
2.1 使用 ps 命令查看VSS和RSS
ps -eo pid,vsz,rss,comm --sort=-rss | head
  • VSZ:VSS值(单位KB)。
  • RSS:常驻内存大小(单位KB)。
  • 示例输出:
    PID    VSZ   RSS COMMAND
    1234  10240 2048 java
    5678   8192 1024 nginx
    
2.2 使用 top 或 htop
  • top 默认显示 VIRT(VSS) 和 RES(RSS)。
  • 按 F2 进入 htop 设置界面,可添加 PSS 和 USS 列。
2.3 通过 /proc/[pid]/smaps 文件

查看进程的详细内存映射,包含每个内存段的PSS和USS:

cat /proc/1234/smaps | grep -iE 'Pss|Swap|Rss'
  • 输出示例:
    Rss:                  1024 kB
    Pss:                   512 kB
    Private_Clean:        768 kB  # USS = Private_Clean + Private_Dirty
    Private_Dirty:        256 kB
    
2.4 使用 pmap 命令

显示进程的内存映射,支持扩展信息:

pmap -x 1234          # 查看RSS和内存段分布
pmap -XX 1234         # 显示更详细字段(需高版本pmap)
2.5 工具 smem 统计PSS和USS

安装后通过 smem 直接汇总内存使用:

smem -p -k -P "chrome"  # 按进程名过滤,显示PSS、USS
  • 参数说明:
    • -p:以百分比形式显示内存占比。
    • -k:单位为KB。
    • -u:显示用户维度统计。

3. 各指标应用场景
  • VSS:评估进程虚拟内存需求(如JVM配置的堆大小)。
  • RSS:初步判断进程内存占用,但可能高估实际使用。
  • PSS:评估系统整体内存压力(适合多进程共享内存的场景)。
  • USS:精准定位内存泄漏(仅计算进程独占内存)。

4. 内存泄漏排查示例

假设某个Java进程内存异常增长:

  1. 通过 smem 或 /proc/[pid]/smaps 查看USS值是否持续上升。
  2. 若USS持续增加,结合堆转储(jmap)分析对象分配。
  3. 若USS稳定但PSS增加,可能是共享库或缓存导致。

5. 指标对比总结
场景推荐指标原因
评估单个进程内存RSS快速查看,但需注意共享内存重复计算
系统整体内存压力PSS共享内存均摊,总和接近实际物理内存
内存泄漏排查USS仅统计独占内存,避免共享库干扰
虚拟内存分配分析VSS判断进程虚拟地址空间需求

6. 注意事项
  • 权限要求:查看其他用户进程需 root 权限。
  • 容器环境:在Docker/K8s中需进入容器执行命令(如 docker exec)。
  • 共享内存:RSS可能包含共享库、tmpfs等,需结合PSS/USS分析。

掌握这些内存指标及其工具,能更精准定位性能瓶颈和资源问题,尤其在处理高并发或内存敏感型应用时至关重要。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

更多推荐