.NET(C#):獲取進程的內存私有工作集


當前.NET Framework(.NET 4.0)的Process僅提供進程的內存工作集的獲取(通過WorkingSet64屬性),而沒有提供對私有工作集的獲取。注意在Windows Vista之后,Windows任務管理器的進程內存一項默認是顯示進程的私有工作集的,因此這一性能數據還是很重要的。

 

通過性能計數器Process類的WorkingSet – Private可以獲取進程的私有工作集。當然通過WorkingSet屬性也可以獲取工作集。另外Process類和性能計數器都有Peak WorkingSet可以獲取工作集的高峰值。

 

比如,通過Process.WorkingSet64和性能計數器的WorkingSet和WorkingSet Private來監控一個程序(以任務管理器taskmgr做示例)的內存工作集。

var processName = "taskmgr";

using (var process = Process.GetProcessesByName(processName)[0])

using (var p1 = new PerformanceCounter("Process""Working Set - Private", processName))

using (var p2 = new PerformanceCounter("Process""Working Set", processName))

{

    while (true)

    {

        //注意除以CPU數量

        Console.WriteLine("{0}{1:N} KB""工作集(進程類)", process.WorkingSet64 / 1024);

        Console.WriteLine("{0}{1:N} KB""工作集 ", process.WorkingSet64 / 1024);

        Console.WriteLine("{0}{1:N} KB""私有工作集 ", p1.NextValue() / 1024);

        Thread.Sleep(1000);

    }

}

 

輸出:

工作集(進程類)9,024.00 KB

工作集 9,024.00 KB

私有工作集 2,028.00 KB

工作集(進程類)9,024.00 KB

工作集 9,024.00 KB

私有工作集 2,028.00 KB

……

來源:http://www.cnblogs.com/mgen/archive/2011/11/18/2254225.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM