Инструменты профилирования памяти .NET [дубликат]

Возможные Дубликаты:
Что-То Хорошее .Чистая профайлеры?

Я ищу хорошие инструменты профилирования памяти .NET CLR.

мое ключевое требование заключается в том, что он будет хорошо играть с IIS и автономными приложениями CLR. В идеале я бы увидел, какие объекты выделены, где они выделены и какого размера они?

есть ли у кого-нибудь хороший опыт работы с конкретным инструментом, которым вы были бы рады рекомендовать?

9 ответов


в настоящее время я оцениваю оба SciTech .NET профилировщик памяти 3.1 и профилировщик памяти муравьев 5.1. Год или два назад я попробовал "Джетбрейнз", но он был не так хорош, как муравьи, так что на этот раз я не потрудился. Из чтения веб-сайтов похоже, что это не так хорошо для профилирование как два других.

и муравьи, и профилировщик памяти Scitech имеют функции, которые другие не имеют, поэтому лучше всего будет зависеть от вашего предпочтения. Вообще говоря, Scitech one предоставляет более подробную информацию, в то время как муравьи действительно невероятны при идентификации протекающего объекта. В целом, я предпочитаю муравьев, потому что он так быстро идентифицирует возможные утечки.

вот основные плюсы и минусы каждого из моего опыта:

общие черты муравьев и SciTech .NET профилировщик памяти

  • функция анализа в реальном времени
  • отличные how-to видео на своих веб-сайтах
  • прост в использовании
  • разумно performant (очевидно, медленнее, чем без прилагаемого профилировщика, но не так сильно вы расстраиваетесь)
  • показать экземпляры протекающих объектов
  • в основном они делают работу очень хорошо

муравьев

  • фильтры одним щелчком мыши, чтобы найти общие утечки включая: объекты, сохраняемые только обработчиками событий, объекты, которые расположены, но все еще живы, и объекты, которые поддерживаются в живых только ссылкой от размещенного объекта. Это, вероятно, особенность убийцы муравьев-обнаружение утечек невероятно быстро из-за этого. По моему опыту, большинство утечек вызвано тем, что обработчики событий не отцепляются, и муравьи просто доставляют вас прямо к этим объектам. Потрясающий.
  • график хранения объектов. Хотя та же информация доступна в Scitech, ее гораздо проще интерпретировать в МУРАВЬИ.
  • показывает размер с дочерними элементами в дополнение к размеру самого объекта (но только когда экземпляр выбран, к сожалению, не в общем списке классов).
  • Лучшая интеграция с Visual Studio (щелкните правой кнопкой мыши на графике, чтобы перейти к файлу)

SciTech .NET профилировщик памяти

  • показывает трассировку стека при выделении объекта. Это действительно полезно для объектов, которые выделены в много разных мест. С муравьями трудно точно определить, где был создан просочившийся объект.
  • показывает количество одноразовых объектов, которые не были утилизированы. Хотя это не указывает на утечку, он определяет возможности для устранения этой проблемы и повышения производительности приложения в результате более быстрой сборки мусора.
  • более подробные параметры фильтрации (несколько столбцов можно фильтровать независимо).
  • представляет информацию об общих объектах создано (включая собранный мусор). Муравьи показывают только "живую" статистику объектов. Это упрощает анализ и настройку общей производительности приложения (например. определите, где создается много ненужных объектов, которые не обязательно протекают).

в качестве резюме, я думаю, муравьи поможет вам найти то, что протекает быстрее, в то время как Scitech предоставляет немного более подробную информацию о вашей общей производительности памяти приложения и отдельных объектов, как только вы знаете, что смотреть (например. трассировка стека при создании). Если бы к муравьям добавили трассировку стека и отслеживание недисперсных одноразовых объектов, я бы не видел необходимости использовать что-либо еще.


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

остерегайтесь нескольких старых версий с собственного сайта Microsoft. По состоянию на ноябрь 2011 года последняя версия выглядит так:последняя версия (альтернативная ссылка)


Если вы чувствуете себя действительно отчаянно, вы можете использовать WinDbg с библиотекой сына забастовки (SOS.DLL), который поставляется с .NET framework.


большой поклонник Профилировщик JetBrains сам


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

.NET Memory Profiler является мощным инструмент для обнаружения утечек памяти и оптимизация использования памяти в программы, написанные на C#, VB.NET или любой другой язык .NET.


Я профилировщик муравьев.

помимо показа всего, что вам нужно, он нарисует простой график, где вы можете увидеть, что занимает больше всего времени для выполнения, и что ест память. Когда вы нажмете на graphp, он покажет вам строку coresponding в вашем коде.

и мне нравятся маленькие прогресс-бары, которые тонут в строках кода, которые слишком долго выполняются.


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


поскольку все перечисляют доступные инструменты, я подумал, что укажу вам полный список профилировщиков для .NET:http://sharptoolbox.com/categories/profilers-debuggers

там вы найдете инструменты, предложенные здесь, и все остальные, каждый с кратким описанием того, что он предлагает.


Я использовал Aqtime С большим успехом на протяжении многих лет. Я пробовал муравьев и других, но вернулся к Aqtime, так как я также делаю много разработки в неуправляемом коде.