正确使用GC中的"%时间"表现计数器

时间:2014-05-21 15:49:24

标签: c# .net performancecounter

我正在努力获得GC中的"%时间"性能计数器" .NET CLR内存"类别编程。

根据PerfMon中的描述,

  

%GC中的时间是花费的时间百分比   自上一个GC循环后执行垃圾收集(GC)。这个   计数器通常是垃圾工作的指标   收集器代表应用程序收集和压缩内存。   此计数器仅在每个GC和计数器结束时更新   值反映了最后观察到的值;这不是一般的。

基于该描述,我的理解是我必须定期获得性能计数器并自己计算平均值。

我获得性能计数器的方式是

     string category = ".NET CLR Memory";
     string counter  = "% Time in GC";
     string instance = Process.GetCurrentProcess().ProcessName;
     PerformanceCounter gcPerf;

     // make sure the performance counter is available to query
     if (PerformanceCounterCategory.Exists(category) &&
         PerformanceCounterCategory.CounterExists(counter, category) &&
         PerformanceCounterCategory.InstanceExists(instance, category))
     {
        gcPerf = new PerformanceCounter(category, counter, instance);
     }

然而,当我查看http://msdn.microsoft.com/en-us/library/xb29hack(v=vs.90).aspx时,我的理解是gcPerf.NextValue()将进行抽样并计算你的平均值。

那究竟什么才能正确使用GC中的"%时间"?调用gcPerf.NextValue()是否返回自上次调用该方法以来的平均值?

0 个答案:

没有答案