關於C#的Process的內存相關屬性解讀


查看msdn或定位到Process類,會看他與內存相關的屬性有20個,為了快速找到自己想要的屬性,這里進行一下解讀:

首先要明白幾個概念:虛擬內存,分頁文件,分頁內存,物理內存,工作集,專用內存(私有內存,不能共享的內存)

雖然有這么多叫法,但只是叫法不一樣。把虛擬內存,分頁文件,分頁內存都看成虛擬內存就可以了(個人理解)。

另外注意幾個技巧,第一:Peak是峰值的意思,以Peak開頭的屬性是使用時的內存量,其他的都是分配的內存;

第二:以64結尾的屬性返回long類型,否則返回int類型(int類型的屬性已經過時);第三:兩個返回類型稍微特殊的是MaxWorkingSet和MinWorkingSt,返回IntPtr代表字節數。

那么20個屬性減去2個特殊的,其他的都有一個以64結尾的含義一樣的屬性,那么現在意義不一樣的屬性共有11個,只需要理解這11個即可。

將這11個屬性分為四類,

第一,MemorySize(可能包含分頁內存)

PagedMemorySize(64) 原話:由可寫入到虛擬內存頁面文件的關聯進程分配的內存量(以字節為單位)

PeakPagedMemorySize(64) 原話:自啟動關聯的進程以來為關聯進程分配的虛擬內存分頁文件中的最大內存量(以字節為單位)。

PrivateMemorySize(64) 原話:為關聯的進程分配的不能與其他進程共享的內存量(以字節為單位)。

第二,SystemMemorySize(系統內存,是不是可以理解系統為硬件保留的內存)

PagedSystemMemorySize(64) 原話:系統已為可寫入到虛擬內存頁面文件的關聯進程分配的內存量(以字節為單位)。

NonpagedSystemMemorySize(64) 原話:為關聯的進程分配的、不能寫入虛擬內存分頁文件中的系統內存量(以字節為單位)。

第三,VirtuaMemorySize(虛擬內存,分頁內存)

VirtualMemorySize(64) 原話:為關聯的進程分配的虛擬內存量(以字節為單位)。

PeakVirtualMEmorySize(64) 原話:關聯進程請求的最大虛擬內存量(以字節為單位)。

第四,WokingSet(工作集,物理內存)

MaxWorkingSet 原話:內存中允許的進程的最大工作集大小(以字節為單位)。

MinWorkingSet 原話:內存中進程所需的最小工作集大小(以字節為單位)。

PeakWorkingSet(64) 原話:自啟動關聯的進程以來為關聯的進程分配的最大物理內存量(以字節為單位)。

WorkingSet(64) 原話:關聯進程當前使用的物理內存總量(以字節為單位)。

 

 根據動態刷新的效果來看,實時自動調整的內存量有三個值:

可分頁內存量,私有內存量,工作集


免責聲明!

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



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