实时获取子Appdomain cpu使用情况,内存使用情况和线程数

时间:2014-11-17 03:37:24

标签: c# memory cpu monitoring appdomain

在进程(主appdomain)中创建的3-sub appdomain,以及如何实时获取子Appdomain cpu使用情况,内存使用情况和线程数?

2 个答案:

答案 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;