.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

转载于:https://www.cnblogs.com/gjhjoy/p/3551546.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值