Найти, когда сборщик мусора последний раз запускался в .NET - PullRequest
2 голосов
/ 10 августа 2011

Есть ли способ выяснить, когда сборщик мусора последний раз запускался в моей программе?Предположим, у меня запущена программа с интенсивными вычислениями, и мне интересно, работал ли GC в середине, как мне это сделать?

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 10 августа 2011

Вы можете добавить код регистрации в финализатор полученного объекта.
Это должно быть сделано только для диагностических целей;не следует использовать финализаторы, за исключением собственных ресурсов.

Также можно посмотреть счетчики производительности GC ;подробнее см. здесь .

1 голос
/ 10 августа 2011

Попробуйте CLR Profiler

Я использовал его для .NET 3.5 (должно быть в порядке для 2.0-3.5)

http://msdn.microsoft.com/en-us/library/ff650691.aspx

Для .NET 4.0

http://www.microsoft.com/download/en/details.aspx?id=16273

0 голосов
/ 10 августа 2011

Вероятно, для этого вы можете использовать счетчики Permon, в частности значение .Net CLR Memory -> % Time in GC:

% Время в ГХ - это процент времени, затраченного на выполнение мусора.Коллекция (GC) с момента последнего цикла GC.Этот счетчик обычно является индикатором работы, выполняемой сборщиком мусора от имени приложения для сбора и сжатия памяти.Этот счетчик обновляется только в конце каждого GC, и значение счетчика отражает последнее наблюдаемое значение;Это не в среднем.

Это не совсем то, что вы просите, но выглядит разумным показателем стоимости сбора мусора.В качестве бонуса, если значение этого счетчика изменяется, то это означает, что прошел хотя бы один цикл GC.

...