Инструменты профилирования памяти .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.
.NET Профилировщик Памяти очень помог мне в моем предыдущем проекте. Это не бесплатно, но очень хорошо.
.NET Memory Profiler является мощным инструмент для обнаружения утечек памяти и оптимизация использования памяти в программы, написанные на C#, VB.NET или любой другой язык .NET.
помимо показа всего, что вам нужно, он нарисует простой график, где вы можете увидеть, что занимает больше всего времени для выполнения, и что ест память. Когда вы нажмете на graphp, он покажет вам строку coresponding в вашем коде.
и мне нравятся маленькие прогресс-бары, которые тонут в строках кода, которые слишком долго выполняются.
в настоящее время я использую профилировщик муравьев. Это очень хороший инструмент со многими параметрами детализации профилирования и хорошо работает с автономными приложениями, сервером разработки и IIS.
поскольку все перечисляют доступные инструменты, я подумал, что укажу вам полный список профилировщиков для .NET:http://sharptoolbox.com/categories/profilers-debuggers
там вы найдете инструменты, предложенные здесь, и все остальные, каждый с кратким описанием того, что он предлагает.
Я использовал Aqtime С большим успехом на протяжении многих лет. Я пробовал муравьев и других, но вернулся к Aqtime, так как я также делаю много разработки в неуправляемом коде.