• .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

  • 相关阅读:
    【转】Redis主从复制简介
    Redis配置文件详解
    Redis在Windows环境下搭建
    Redis桌面管理工具 RedisDesktopManager
    Redis服务停止报错解决方案[NOAUTH Authentication required]
    Redis启动警告错误解决
    修改tcp内核参数:somaxconn
    CentOS6.8安装Redis3.2.5
    Github之协同开发
    自定义实现栈的功能
  • 原文地址:https://www.cnblogs.com/gjhjoy/p/3551546.html
Copyright © 2020-2023  润新知