在进程(主appdomain)中创建的3-sub appdomain,以及如何实时获取子Appdomain cpu使用情况,内存使用情况和线程数?
答案 0 :(得分:0)
CPU使用率和其他相关信息并不真正适用于.Net AppDomain,它只存在于CLR级别而不是OS级别。因此,默认情况下,您只能在流程级别跟踪这些详细信息。
自.Net 4.0以来,AppDomiain具有名为MonitoringIsEnabled
的静态属性。设置完成后,您可以使用其他属性(AppDomain.Monitor<XXXX>
)跟踪详细信息。请注意,这仍然不是实时的。 This可能是一个好的开始。
答案 1 :(得分:0)
使用以下方法,获取的值似乎不正确。
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;