"%时间在GC"中的含义是什么?表现计数器

时间:2015-07-22 17:35:39

标签: c# performance memory-management garbage-collection

我正在使用perfcounter = "% Time in GC"

所以当我跑

gcPerf.NextSample() 

我得到的值为42.12273。

但我不明白这些值的单位是(ms)还是什么?

如果我想要(ms)我可以如何改造它?

这是全局代码

 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);
 }

1 个答案:

答案 0 :(得分:1)

  

这是自GC结束以来在GC中花费的时间的百分比   最后一个GC。例如,自上次GC结束以来已经有100万个周期   我们在当前的GC中花了30万个周期,这个计数器会   显示30%。

阅读thisthis

  

此柜台的健康价值是多少?很难说。这取决于   你的应用程序的功能。但是,如果你看到一个非常高的价值(如   50%或更多)那么这是一个合理的时间来看看发生了什么   托管堆内部。如果这个数字是10%,那很可能   最好在你的应用程序的其他地方寻找,因为即使你可以摆脱   其中一半,你只会节省5% - 很可能不是很好   值得的。