你真的懂任务管理器中有关内存的参数Private(提交大小)和working set(工作设置)吗?

任务管理器中跟内存相关有两个重要的指标Private(提交大小)和working set(工作设置)。如下图所示:

这两个指标在process explorer中叫做Private Bytes和Working Set。

而在VMMap中,他们则分别被叫做Private和Total Working Set。我这里也用Private和working set来称呼他们。

他们经常被用来标识一个进程到底占用了多少内存,你知道他们分别代表什么吗?

 

Private指的是当你修改他时仅仅当前进程会受到影响。(copy-on-wirte属性的页面还没被修改时也属于此类)。这类一般包括Heap,stack和image的copy-on-write的部分。Private是虚拟内存的概念,其对应的内存可能被物理内存backup,也可能被paging file backup。比如用new来创建一个100M的内存时,private就增加100M,但是这块内存在被访问之前,实际上是paging file backup的,物理内存并没有真正占用。(win7下测试所得)

 

Working set是指物理内存。但是这个物理内存既包括了属于当前进程的私有物理内存(Private Working set)。也包括了可以共享的Working set(Sharable Working Set)。Private Working Set 就是前面的Private的一部分,Private的另外一部分由paging file backup。

 

在VMMap中,还有一个概念是Committed,它也是虚拟内存的概念,其实可以分为Private的虚拟内存和可以共享的虚拟内存。而可以共享的虚拟内存的由物理内存backup的部分就是sharable working set。

 

所以:

从私有和可共享的角度来看:
Committed = Private virtual memory + sharable virtual memory

从memory由什么back up来看:

Committed = memory backed by paging file + working set

 

Private Virtual Memory = Private Working set + private memory backed by paging file

Working set = private working set + sharable working set

 

posted @   皮皮鲁.  阅读(13622)  评论(5编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示