.NET(C#):擷取進程的記憶體私人工作集

來源:互聯網
上載者:User

當前.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

……

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.