簡體   English   中英

為什么 Process.PrivateMemorySize64 /1024 與 Windows Task Manager Memory (Private Working Set) 不匹配?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM