Private Bytes、Working Set、Virtual Size 的区别

Private Bytes、Working Set、Virtual Size 的区别

Private Bytes

进程占用内存、进程申请的内存和进程所依赖的动态库申请的内存总和,不包括进程所依赖的动态库占用的内存、mmap的内存。不一定在物理内存上,可以被交换到磁盘上,所以可以比Working Set大。由于也包括进程依赖动态库所申请的内存,所以不能判断内存泄漏是由进程导致的还是动态库导致的。

Working Set

进程和进程所依赖的动态库和mmap的内存占用的物理内存大小。

Virtual Size

进程和进程所依赖的动态库和mmap的内存一共所占用的虚拟内存,包括在物理内存上和磁盘上的总空间,所以一定比Working Set大,也比Private Bytes大。

mmap名词解释:mmap是一种内存映射文件的方法。mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。mmap在用户空间映射调用系统中作用很大。mmap 必须以PAGE_SIZE为单位进行映射,而内存也只能以页为单位进行映射,若要映射非PAGE_SIZE整数倍的地址范围,要先进行内存对齐,强行以PAGE_SIZE的倍数大小进行映射。)

在Performance monitor中可以通过private bytesVirtual bytes来衡量程序的内存使用. 在task manager中, 也有Memory UsageVM Size两项. 但是仔细比较后会发现Memory Usage并不是对应private bytes, VM Size也不是对应Virtual Bytes.

其实, task manager中的Memory Usage对应的是working set, VM Size对应的是private bytes. 因此如果使用task manager观察内存使用, 应该注意到这个差别.

Working Set和Private Bytes

一个有趣的问题是, working set指目前程序所消耗的物理内存, private bytes值commit的内存, 那么为什么有些进程的working set比private bytes还大? 要回答这个问题, 需要仔细看看两者的定义:

Working Set refers to the numbers of pages of virtual memory committed to a given process, both shared and private.
Private Bytes is the current size, in bytes, of memory that this process has allocated that cannot be shared with other processes.
<
  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值