C #: Доступ к счетчикам производительности для «категории памяти .NET CLR»

Я пытаюсь получить доступ к счетчикам производительности, расположенным в «. NET CLR Memory category» через C #, используя класс PerformanceCounter. Однако не удается создать экземпляры категорий с тем, что, как я ожидал, было правильным именем категории / счетчика

new PerformanceCounter(".NET CLR Memory", "# bytes in all heaps", Process.GetCurrentProcess().ProcessName);

. Я попытался перебрать категории и счетчики, используя следующий код

string[] categories = PerformanceCounterCategory.GetCategories().Select(c => c.CategoryName).OrderBy(s => s).ToArray();
string toInspect = string.Join(",\r\n", categories);

System.Text.StringBuilder interestingToInspect = new System.Text.StringBuilder();
string[] interestingCategories = categories.Where(s => s.StartsWith(".NET") || s.Contains("Memory")).ToArray();
foreach (string interestingCategory in interestingCategories)
{
    PerformanceCounterCategory cat = new PerformanceCounterCategory(interestingCategory);
    foreach (PerformanceCounter counter in cat.GetCounters())
    {
        interestingToInspect.AppendLine(interestingCategory + ":" + counter.CounterName);
    }
}
toInspect = interestingToInspect.ToString();

, но не смог найти ничего похожего. Разве невозможно наблюдать эти значения из среды CLR, или я делаю что-то не так.

Среда, если это имеет значение, - это .NET 4.0, работающая на 64-битном компьютере с Windows 7.

9
задан Mads Ravn 16 January 2011 в 13:51
поделиться