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

來源:互聯網
上載者:User

查看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) 原話:關聯進程當前使用的實體記憶體總量(以位元組為單位)。

 

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.