Мониторинг использования памяти приложением
Существуют методы, которые можно вызвать для наблюдения за работой уборщика
мусора в процессе. Так, следующие статические методы класса
GC
вызываются для
выяснения числа операций уборки мусора в конкретном поколении или для объема
памяти, занятого в данный момент объектами в управляемой куче.
Int32 CollectionCount(Int32 generation);
Int64 GetTotalMemory(Boolean forceFullCollection);
Чтобы выполнить профилирование конкретного блока кода, я часто вставляю
до и после него код, вызывающий эти методы, а затем вычисляю разность. Это по-
зволяет мне судить о том, как этот блок кода сказывается на рабочем наборе про-
цесса, и узнать, сколько операций уборки мусора произошло при исполнении этого
блока кода. Если показатели высокие, значит, нужно поработать над оптимизацией
алгоритма в блоке кода.
575
Поколения
Можно также узнать, сколько памяти расходуется отдельным доменом при-
ложений. О том, как это сделать, вы узнаете в главе 22.
В ходе установки .NET Framework устанавливается также набор счетчиков
производительности, которые позволяют собирать в реальном времени самые
разнообразные статистические данные о CLR. Эти данные можно просматривать
с помощью утилиты
PerfMon exe
или системного монитора из состава Windows.
Проще всего получить доступ к системному монитору, запустив утилиту
PerfMon
exe
и щелкнув на кнопке
+
панели инструментов; на экране появляется диалоговое
окно
Add
Counters
, показанное на рис. 21.12.
рис. 21.12.
.Счетчики.памяти. NET.CLR.в.окне.PerfMon exe
Для мониторинга уборки мусора в CLR выберите объект производительности
NET.CLR.Memory
, затем укажите в списке нужное приложение. В завершение вы-
берите набор счетчиков для мониторинга, щелкните на кнопке
Add
, затем — на
кнопке
OK
. Теперь системный монитор будет в реальном времени строить график
выбранного статистического показателя. Чтобы узнать, что означает счетчик, вы-
делите его и установите флажок
Show
Description
.
Еще один замечательный инструмент для анализа использования памяти
и производительности приложения называется PerfView. Он позволяет собирать
журналы ETW (Event Tracing for Windows) и обрабатывать их. Вы можете найти
его в Интернете по строке поиска «PerfView». Наконец, можно воспользоваться
отладочным расширением (
SOS dll
), помогающим при проблемах с памятью и дру-
гих проблемах CLR. Это расширение позволяет узнать, сколько памяти выделено
для процесса в управляемой куче, вывести все объекты, зарегистрированные для
финализации и помещенные в очередь, просмотреть записи в таблице
GCHandle
как
576
Do'stlaringiz bilan baham: |