![](/img/trans.png)
[英]Process.PrivateMemorySize64 returning committed memory instead of private
[英]Why does Process.PrivateMemorySize64 /1024 not match what Windows Task Manager Memory (Private Working Set)?
為什么Process.PrivateMemorySize64 /1024
與 Windows Task Manager Memory (Private Working Set) 不匹配?
似乎有很大(~ 30%)的差異。 另外,該值不像任務管理器那樣經常更新。
調用_process.Refresh()
沒有幫助。
你正在尋找不同的東西。
Process類的PrivateMemorySize64
屬性等同於Private Bytes性能計數器。 它表示為無法與其他進程共享的關聯進程分配的專用內存總量。 專用字節不僅是物理內存,還包括分頁文件等。
另一方面,私有工作集跟蹤上面的私有字節的子集 ,其僅表示進程正在使用的物理內存,並且不能與其他進程共享。
PrivateMemorySize64代表您的所有私有內存,而不僅僅是私有工作集,它是當前未分頁到磁盤的專用內存量。
如果您想知道進程的總大小,則應使用VirtualMemorySize64屬性。 它會占用您的進程分配的所有內存,無論該內存是分頁還是內存。 這有助於了解您的32位進程是否接近2GB的虛擬大小(進程地址空間),這通常是32位進程的限制(除非在32位Windows上使用/ 3GB選項或該應用程序在64位版本的Windows上運行,並且具有大地址識別功能。
我想這就是你要找的
var ram = new PerformanceCounter("Process", "Working Set - Private", processName, true);
var ramUsage = Math.Round(ram.NextValue() / 1024 / 1024, 2)
Console.WriteLine($"{ramUsage}");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.