实时获取子Appdomain cpu使用、内存使用、线程数

Posted

技术标签:

【中文标题】实时获取子Appdomain cpu使用、内存使用、线程数【英文标题】:Getting sub-Appdomain cpu usage, memory usage, and thread number in real-time 【发布时间】:2014-11-17 03:37:23 【问题描述】:

在一个进程(main appdomain)中创建3-sub appdomain,如何实时获取sub-Appdomain cpu使用率、内存使用率、线程数?

【问题讨论】:

这是在 4 NOV2014 关闭之前被问到的,谷歌搜索揭示了一切,哈哈 c# how to get sub-appdomain cpu usage, memory usage 这是搜索中的第一个 【参考方案1】:

CPU 使用率和其他相关信息并不真正适用于 .Net AppDomain,它仅存在于 CLR 级别而不存在于操作系统级别。因此,默认情况下,您只能在流程级别跟踪这些详细信息。

从 .Net 4.0 开始,AppDomiain 具有名为 MonitoringIsEnabled 的静态属性。设置后,您可以使用其他属性 (AppDomain.Monitor<XXXX>) 跟踪详细信息。请注意,这仍然不是实时的。 This 可能是一个好的开始。

【讨论】:

【参考方案2】:

使用以下方法,获取的值似乎不正确。

public static double GetAppDomainCpuUsage(AppDomain hostDomain)
        

            if (Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds > 0)
                return hostDomain.MonitoringTotalProcessorTime.TotalMilliseconds * 100 /                  Process.GetCurrentProcess().TotalProcessorTime.TotalMilliseconds;
            return 0;
        

        public static double GetAppDomainMemoryUsage(AppDomain hostDomain)
        
            if (AppDomain.MonitoringSurvivedProcessMemorySize > 0)
                return (double)hostDomain.MonitoringSurvivedMemorySize * 100 / (double)AppDomain.MonitoringSurvivedProcessMemorySize;
            return 0;
        

AppDomain.MonitoringIsEnabled = true;

【讨论】:

以上是关于实时获取子Appdomain cpu使用、内存使用、线程数的主要内容,如果未能解决你的问题,请参考以下文章