zoukankan      html  css  js  c++  java
  • .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

  • 相关阅读:
    创建类以及引用一个类
    修改hosts文件
    微信第三方登录接口开发
    Android定位
    Leetcode 102. Binary Tree Level Order Traversal
    Leetcode 725. Split Linked List in Parts
    Leetcode 445. Add Two Numbers II
    Leetcode 328. Odd Even Linked List
    Leetcode 237. Delete Node in a Linked List
    Leetcode 234. Palindrome Linked List
  • 原文地址:https://www.cnblogs.com/gjhjoy/p/3551546.html
Copyright © 2011-2022 走看看