你真的懂任務管理器中有關內存的參數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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM