Я пытаюсь получить доступ к счетчикам производительности, расположенным в «. 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.