關於C 的Process的記憶體相關屬性解讀

2021-09-06 08:09:24 字數 1634 閱讀 2278

檢視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) 原話:關聯程序當前使用的物理記憶體總量(以位元組為單位)。

根據動態重新整理的效果來看,實時自動調整的記憶體量有三個值:

可分頁記憶體量,私有記憶體量,工作集

C 的process程序的處理

查詢程序 啟用程序 關閉程序 using using using system.diagnostics 啟用程序 void process process p 例項化乙個process物件 p process.start e 1.txt 要開啟的程序 或 要啟用的程式 括號內為絕對路徑 p.kill...

C 關於記憶體的思考

對面試既愛又恨,每次面試都像是經歷了一次洗禮,緊張又興奮,大腦高速運轉,最重要的是每次都會發現自身的許多不 足,這樣才能不斷的提高自我。下面是面試遇到的乙個問題,還挺有意思的。include void getmemory char p p char malloc 100 void test void...

Process元件的使用

using system using system.diagnostics using system.windows.forms namespace process元件 private void form1 load object sender,eventargs e private void bu...