Поделиться через


DA0024. Избыточное время ЦП ГК

Идентификатор правила

DA0024

Категория

Использование .NET Framework

Метод профилирования

Все

Сообщение

Очень высокий % времени сборки мусора. Слишком высокие дополнительные временные затраты на сборку мусора.

Тип правила

Предупреждение

При профилировании методом выборки, памяти .NET или конфликтов ресурсов необходимо собрать не меньше 10 экземпляров, чтобы вызвать срабатывание правила.

Причина

Данные о производительности системы, собранные во время профилирования, свидетельствуют о том, что количество времени, затраченное на сборку мусора, слишком велико по сравнению с общим временем обработки данных приложения.

Описание правила

Среда CLR Microsoft .NET обеспечивает автоматический механизм управления памятью, который использует сборщик мусора для удаления из памяти объектов, более не используемых приложением. Работа сборщика мусора основана на понятии поколений и предположении о краткосрочном характере выделения памяти. Например, время существования локальных переменных должно быть небольшим. Поколение новых объектов начинается с 0 (поколение 0), затем они переходят в поколение 1, если они сохраняются после сборки мусора, и, наконец, в поколение 2, если они все еще используются приложением.

Объекты поколения 0 собираются часто и обычно очень эффективно. Объекты поколения 1 собираются менее часто и менее эффективно. Наконец, сбор объектов с большим временем существования из поколения 2 должен происходить еще реже. Сборка поколения 2, т. е. полная сборка мусора, также является наиболее ресурсоемкой операцией.

Это правило применяется, если количество времени, затраченное на сборку мусора, существенно превышает общее время обработки приложения.

Примечание

Если доля времени, затраченного на сборку мусора, существенна, но не слишком велика по сравнению с общим временем обработки приложения, вместо этого правила применяется предупреждение DA0023. Высокое время ЦП ГК

Анализ предупреждения

Дважды щелкните сообщение в окне "Список ошибок", чтобы перейти к представлению Представление меток данных профилирования. Найдите столбец Память CLR .NET\% времени сборки мусора. Установите, есть ли какие-либо этапы выполнения программы, на которых дополнительные временные затраты на управляемую сборку мусора в памяти существенно выше, чем на других этапах. Сравните процент времени, затраченного на сборку мусора, с долей времени сборки мусора, указанной в значениях Сборок мусора для поколения 0, Сборок мусора для поколения 1, Сборок мусора для поколения 2.

Значение процента времени, затраченного на сборку мусора, соответствует количеству времени, которое приложение потратило на выполнение сборки мусора соразмерно с общим количеством времени обработки. Следует помнить о том, что причиной слишком большого значения процента времени, затраченного на сборку мусора, не всегда является слишком интенсивная сборка мусора. Дополнительные сведения о способе вычисления процента времени, затрачиваемого на сборку мусора, см. в заметке Difference Between Perf Data Reported by Different Tools – 4 в Maoni's Weblog на MSDN. Если в процессе сборки мусора на компьютере происходит ошибка страницы или выполнение приложения прерывается другой операцией с более высоким приоритетом, эта дополнительная отсрочка будет учтена в счетчике "% времени сборки мусора".