Возможности dotMemory

dotMemory — профилировщик памяти для .NET, который можно запускать прямо из Visual Studio, подключать в качестве плагина к JetBrains Rider или использовать как самостоятельный инструмент.

Главный экран dotMemory

Поддержка различных .NET-приложений

dotMemory позволяет вам профилировать приложения, основанные на любых поддерживаемых версиях платформ .NET Framework, .NET Core, .NET, веб-приложения ASP.NET, IIS, IIS Express, службы Windows, приложения универсальной платформы Windows, и многое другое. На macOS и Linux dotMemory можно использовать только в составе JetBrains Rider или в качестве консольного профилировщика.

Поддержка дампов процессов

Поддержка RAW-дампов памяти

dotMemory позволяет вам импортировать raw-дампы памяти Windows, полученные с помощью Диспетчера задач или Process Explorer, и анализировать их как обычные снэпшоты памяти. В ходе анализа вы можете воспользоваться различными автоматическими инспекциями, диаграммами удержания и другими передовыми возможностями dotMemory.

Дипаграмма «Солнечные лучи»

Дипаграмма «Солнечные лучи»

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

Один быстрый взгляд на диаграмму позволяет вам узнать, какие объекты критически важны для вашего приложения, и оценить крупнейшие структуры: чем больше памяти удерживает доминатор, тем больше центральный угол.

Чтобы получить путь удержания определенного доминатора, щелкните на соответствующую дугу. Дважды щелкните на доминаторе, чтобы приблизить диаграмму, что позволит вам более подробно разглядеть объекты, удерживаемые этим доминатором.

Запуск dotMemory из Visual Studio

Интеграция с Visual Studio и Rider

Интеграция dotMemory с JetBrains Rider позволяет отслеживать распределение памяти в реальном времени, анализировать, как память распределялась в выбранные промежутки времени, и выполнять другие полезные действия. Вы также можете в любой момент запустить сеанс профилирования памяти из Visual Studio.

Далее вы можете переходить от типа, указанного в наборе объектов dotMemory, к объявлению типа в Visual Studio.

Автоматический сбор снэпшотов

Автоматические снэпшоты

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

Хронологический обзор

Хронологический обзор со сбором данных в реальном времени

Выполняйте мониторинг памяти, потребляемой вашим приложением, делайте снэпшоты и сравнивайте их одним кликом.

Несколько режимов изучения данных

Несколько режимов изучения данных

Изучайте объекты кучи с разных ракурсов. Хотите понимать взаимоотношения объектов? Быть в курсе того, на какие объекты они ссылаются и с помощью каких полей? Знать, какими вызовами были созданы эти объекты? Нет проблем! В dotMemory есть обзоры на все случаи жизни.

Сравнение снэпшотов памяти

Сравнение снэпшотов памяти

Сравнение двух снэпшотов — основной способ находить объекты, вызывающие утечку памяти. Используйте сравнительный режим просмотра, чтобы узнать, сколько объектов было создано в промежутке между снэпшотами, а сколько объектов было утилизировано.

Удобный интерфейс с исчерпывающим набором возможностей

Удобный интерфейс с исчерпывающим набором возможностей

Несмотря на то, что профилирование памяти имеет репутацию «занятия для специалистов», уникальный интерфейс dotMemory позволяет резко снизить входной барьер и сделать профилирование памяти доступным и простым. Вы просто перемещаетесь сверху вниз, от набора объектов к их конкретным экземплярам, пока не выявите реальную причину проблем с памятью.

Анализ трафика памяти

Анализ трафика памяти

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

Мощные автоматические инспекции

Мощные автоматические инспекции

dotMemory автоматически сканирует ваш снэпшот на наличие распространенных ошибок, вызывающих проблемы с памятью, таких как дублирующиеся строки, разреженные массивы, «протекающие» обработчики событий или привязки данных WPF. Если вы не знаете, с чего начать, эти инспекции могут послужить отличной стартовой точкой для анализа снэпшота.

Профилировщик командной строки

Профилировщик командной строки

В комплекте с dotMemory поставляется профилировщик для командной строки: dotMemory.exe. Используйте этот инструмент для автоматизации профилирования: сделайте профилирование одним из этапов ваших сборок непрерывной интеграции или используйте его просто для ускорения процедур профилирования (например, если вам нужно регулярно профилировать одно и то же приложение, однако вы не хотите раз за разом запускать интерфейс dotMemory).

Скачать dotMemory

Доступна бесплатная пробная версия на 30 дней