实时获取子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使用、内存使用、线程数的主要内容,如果未能解决你的问题,请参考以下文章
zabbix 3.2 监控Windows 实时内存使用率与CPU使用率
如何实时测量 PC 组件(cpu、内存、磁盘等)的功率(瓦特)?