首页 > Web开发 > 详细

.NET(C#):获取进程的内存私有工作集

时间:2014-02-17 04:36:54      阅读:601      评论:0      收藏:0      [点我收藏+]

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

.NET(C#):获取进程的内存私有工作集

原文:http://www.cnblogs.com/gjhjoy/p/3551546.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!