Инструменты профилирования памяти .NET

Возможный дубликат:
Какие хорошие профилировщики .NET ?

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

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

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


person nick_alot    schedule 30.12.2008    source источник
comment
Не закрывайте вопрос как обман с добавлением ссылки на живой вопрос, это обман ... просто поиск .NET Memory Profiling   -  person Eric Brown - Cal    schedule 15.11.2012
comment
Не дубликат. Другой вопрос о профилировщиках, который указывает на то, что основное внимание уделяется производительности. Это вопрос о профилировании памяти. Скорее всего, инструменты будут частично пересекаться, но это определенно другой вопрос.   -  person yoyo    schedule 25.04.2014


Ответы (9)


В настоящее время я оцениваю как Scitech .NET Memory Profiler 3.1, так и ANTS Memory Profiler 5.1. Я пробовал JetBrains один год или два назад, и он был не так хорош, как ANTS, поэтому на этот раз я не стал беспокоиться. При чтении веб-сайтов кажется, что он не так хорош для профилирования памяти, как два других.

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

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

Общие функции ANTS и Scitech .NET Memory Profiler

  • Функция анализа в реальном времени
  • Отличные обучающие видео на их веб-сайтах
  • Легко использовать
  • Достаточно производительный (очевидно, медленнее, чем без прикрепленного профилировщика, но не настолько, чтобы вы разочаровались)
  • Показать экземпляры протекающих объектов
  • В принципе, они оба неплохо справляются со своей работой.

МУРАВЬИ

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

Scitech .NET Memory Profiler

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

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

person Ben Robbins    schedule 25.09.2009

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

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

person Craig Stuntz    schedule 16.06.2011
comment
Похоже, что сейчас проект размещен на codeplex вместе с последней загруженной версией: clrprofiler.codeplex.com - person Gian Marco; 21.08.2014

Если вы действительно отчаялись, вы можете использовать WinDbg с библиотекой Son-of-Strike (SOS.DLL), которая поставляется с платформой .Net .

person X-Cubed    schedule 25.09.2009
comment
на самом деле, это гораздо более полезно для действительно неясных проблем с памятью, например, когда вы держите ссылку в неочевидном месте - person Steve; 25.09.2009

Я большой поклонник JetBrains Profiler

person annakata    schedule 30.12.2008

.Net Memory Profiler очень помог мне в моем предыдущем проекте. Это не бесплатно, но очень хорошо.

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

person jfs    schedule 30.12.2008
comment
Спасибо, Джон, я посмотрю. Кстати - какое оригинальное название продукта! - person nick_alot; 30.12.2008

Я второй профилировщик ANTS.

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

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

person dmajkic    schedule 30.12.2008

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

person Diadistis    schedule 30.12.2008

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

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

person Fabrice    schedule 23.10.2009

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

person no_one    schedule 03.01.2009