進程的各種內存

參考:
【1】https://blog.csdn.net/fw0124/article/details/6367360?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1
【2】https://blog.csdn.net/wzsy/article/details/42737907
【3】https://www.cnblogs.com/awpatp/archive/2010/01/26/1656651.html

這兩個說的比較詳細了,再次強調幾點:
(1)這裏說的virtual byte跟通常說的虛擬內存是兩個概念。後者指的是paged files,實在硬盤上緩存的一個假的內存;而前者指的是物理分配與虛擬內存都包含的。
(2)在任務管理其中,我們可以看到的跟這個又有些不同了。
(3)總結如下:
Committed是本進程運行所需要的所有內存。按照不同角度,有以下分類:
從私有和可共享的角度來看:
Committed = Private virtual memory + sharable virtual memory
從memory由什麼back up來看:
Committed = memory backed by paging file(硬盤上備份的) + working set(物理內存中備份的)

而working set(物理內存中備份的)中有可能是本進程獨有的,也包含與其他進程共享的。
Private virtual memory中即包含在物理內存中有的,也包含在硬盤上備份的(即通常的虛擬內存)。注意:Private virtual memory不是通常說的虛擬的內存。

上面這些可以在任務管理中有:
在這裏插入圖片描述

有了這幾個概念,就可以看C#中的這些屬性了,見https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process?view=netcore-3.1

(1)PrivateMemorySize64爲Private virtual memory
(2)WorkingSet64表示的是 working set(物理內存中備份的)上的。包含私有和共享的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章