VIRT RES SHR 这三者的之间的区别

VIRTRESSHRtop 命令中的三项指标,用于显示进程的内存使用情况。它们之间的区别如下:

1. VIRT (Virtual Memory Size) - 虚拟内存大小

  • 定义VIRT 表示进程所能访问的所有虚拟地址空间的总和,包括所有分配但未实际使用的内存。
  • 包含内容
    • 进程的代码段。
    • 已分配但尚未使用的内存。
    • 映射的文件和设备(如内存映射的文件)。
    • 动态分配的堆内存。
    • 栈内存。
    • 共享库(包括共享内存)。
  • 意义VIRT 包括了进程所有的内存需求,但并不表示进程实际占用了多少物理内存。它反映了进程的虚拟内存使用量的总和。

2. RES (Resident Set Size) - 常驻内存大小

  • 定义RES 表示进程实际使用的物理内存大小,即该进程当前在物理内存中驻留的部分。
  • 包含内容
    • 进程代码段在内存中的实际占用部分。
    • 进程堆和栈的实际使用部分。
    • 动态分配内存的实际使用部分。
    • 共享库中实际被映射到物理内存的部分。
  • 意义RES 是物理内存中正在被进程实际使用的部分,代表了进程对系统物理内存资源的直接消耗。如果 RES 很大,说明该进程在消耗大量的物理内存资源。

3. SHR (Shared Memory Size) - 共享内存大小

  • 定义SHR 表示进程所使用的共享内存的大小,包括共享库使用的内存和其他进程共享的内存部分。
  • 包含内容
    • 共享库占用的内存,如动态链接库(*.so)使用的内存。
    • 其他进程可能与之共享的内存块。
  • 意义SHR 反映了进程所用的可以与其他进程共享的内存量。SHR 中的内存不全是该进程独占的部分,所以即使多个进程显示相同的 SHR,它们之间实际可能共用这些内存。

三者关系总结

  • VIRT = RES + 进程未使用但保留的虚拟内存空间 + 未映射的共享内存

    • VIRT 是整个进程虚拟内存的总和,包含所有潜在的内存使用量。
  • RES = 实际驻留在物理内存中的内存,包括部分 SHR

    • RES 是实际占用物理内存的部分,代表了进程对物理内存的需求。RES 中可能包含一部分 SHR,因为一些共享内存也是驻留在物理内存中的。
  • SHRRES 的一部分

    • SHR 代表了共享的那部分内存,多个进程可以共享 SHR 中的内存,因而它不完全反映单个进程的物理内存消耗。

通过理解这三个指标,你可以更好地分析系统中进程的内存使用情况,特别是在优化内存使用和调试性能问题时。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bio Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值