查看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) 原話:關聯進程當前使用的實體記憶體總量(以位元組為單位)。
根據動態重新整理的效果來看,即時自動調整的記憶體量有三個值:
可分頁記憶體量,私人記憶體量,工作集