Что нового в dotMemory

На этой странице рассказывается о свежих обновлениях и изменениях в dotMemory.

Скачать dotMemory

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

Пользовательский интерфейс 2024.3

В интерфейс версии 2024.3 внесено много небольших улучшений, и он был доработан, чтобы все версии dotMemory во всех операционных системах выглядели и работали одинаково.

Представление Creation Stack Trace для экземпляров объектов 2024.3

Мы вернули представление Creation Stack Trace, которое раньше было удалено при переработке интерфейса. Оно показывает стек вызовов функции, который привел к созданию объекта, и упрощает поиск причины проблем с памятью.

Представление Back Traces для наборов объектов 2024.3

Мы вернули также представление Back Traces для наборов объектов. В нем отображается инвертированное дерево вызовов, которое показывает цепочку вызовов снизу вверх, начиная с функции, создавшей определенный набор объектов.

Визуализация доминаторов в виде сосульчатой диаграммы 2024.3

Доминаторное дерево теперь может отображаться как сосульчатая диаграмма, показывая потребление памяти доминатором и удерживаемыми объектами. Эта функция доступна в Windows, Linux и macOS как в автономной версии dotMemory, так и в dotMemory в JetBrains Rider.

Визуализация Call Tree в виде диаграммы «солнечные лучи» доступна во всех ОС 2024.3

В версии 2024.2 впервые стало можно представить дерево вызовов (Call Tree) в виде диаграммы «солнечные лучи», а теперь эта функция доступна в Windows, Linux и macOS как в автономной версии dotMemory, так и в dotMemory в JetBrains Rider.

Улучшенный поиск экземпляров 2024.2

Мы добавили новые возможности фильтрации в представлении Instances:

  • Поиск по строковому значению: введите любое строковое значение в поле фильтра, и dotMemory подсветит соответствующие строки. Благодаря этому проще найти экземпляры конкретных строк по их содержимому.
  • Поддержка регулярных выражений в строковых значениях: регулярные выражения позволяют сделать поиск более точным. Например, ^nAsso.{5,}ID$ соответствует nAssociatedObjectID.nAssociatedObjectID.
  • Поиск по адресу объекта: экземпляры объектов можно найти также по их адресам в памяти. Это удобно для прямого отслеживания объектов.

Эти функции доступны в автономной версии dotMemory, а также в dotMemory в JetBrains Rider.

Улучшения в dotMemory для Linux и macOS 2024.2

В версии dotMemory для Linux и macOS появились функции, которые до сих пор были доступны только в Windows:

  • Автоматические инспекции памяти: теперь в dotMemory для Linux и macOS есть представление Inspections, где отображаются автоматически обнаруженные проблемы с использованием памяти.
  • Сравнение снэпшотов между рабочими пространствами: теперь можно сравнить разные сеансы профилирования.

Эти функции доступны в автономной версии dotMemory, а также в dotMemory в JetBrains Rider.

Визуализация Call Tree с помощью диаграммы Sunburst 2024.2

В новой версии дерево вызовов Call Tree можно отобразить в виде диаграммы «солнечные лучи» (Sunburst), где будут выделены функции, которые используют больше всего памяти. Функция доступна в автономной версии dotMemory (Linux и macOS), а также в dotMemory в JetBrains Rider (Windows, Linux и macOS).

Поддержка приложений MAUI

Поддержка приложений MAUI 2024.1

В новой версии можно профилировать приложения на основе фреймворка MAUI.

В настоящее время dotMemory поддерживает только профилирование приложений WinUI для .NET 7.0+ в Windows.

Это касается и автономного dotMemory, и dotMemory в Rider и ReSharper.

Улучшенная поддержка macOS 2024.1

  • Новая версия автономного инструмента dotMemory позволяет указывать пакеты приложений (.app) вместо исполняемых файлов.
  • dotMemory в Rider может профилировать конфигурации запуска macOS. Поддерживаются следующие целевые фреймворки: net7.0-macos, net8.0-macos.
Новые представления для Linux и macOS в dotMemory

Новые представления для Linux и macOS в dotMemory 2024.1

В автономном инструменте dotMemory для Linux и macOS появились функции, которые уже были доступны в версии для Windows:

  • представление Similar Retention для анализа наборов объектов;
  • диаграмма Sunburst для анализа объектов доминаторов.

Поддержка Frozen Object Heap 2024.1

Информация о неизменяемых объектах Frozen Object Heap показывается на хронологическом графике, на диаграмме Heap Fragmentation и в представлении Generations.

Автономный инструмент dotMemory для Linux и macOS 2023.3 Бета-версия

Теперь в операционных системах Linux и macOS можно использовать автономную версию.

Анализ дампов процессов в Linux 2023.3

В новой версии dotMemory можно импортировать и анализировать дампы как обычные снэпшоты Linux. Обратите внимание: в версии dotMemory для Linux можно импортировать только дампы процессов, запущенных в Linux OS.

Анализ снэпшотов в JetBrains Rider 2023.2

В прежних версиях Rider модуль dotMemory можно было использовать только для анализа распределения памяти. Теперь же можно собирать снэпшоты памяти и анализировать их в Rider точно так же, как в автономной версии dotMemory.

  • Анализ снэпшотов работает на Windows, Linux и macOS.
  • В Windows можно также импортировать и анализировать дампы процессов.
  • Некоторые функции и представления недоступны, например автоматические инспекции снэпшотов и представление трассировки стека.

Поддержка Windows ARM64 2022.3

Теперь dotMemory можно использовать в Windows на процессорах ARM64. Это относится ко всем версиям dotMemory: и к автономной версии, и к инструменту, запускаемому в Rider, Visual Studio и из консоли.

Поддержка Windows ARM64 2022.3

Теперь можно использовать консольную версию dotMemory в Linux на процессорах ARM32. Поддерживаемые фреймворки — .NET Core 3.1 и .NET 5.0–7.0.

dotMemory в JetBrains Rider 2022.3

Помимо Windows, профилировщик dotMemory теперь доступен в JetBrains Rider на Linux и macOS. Мы добавили два новых режима профилирования: Memory (sampled allocations) и Memory (full allocations). Они доступны в виджете Run и в меню Run | Switch profiler configuration. Подробнее о различиях между ними — в справке dotMemory.

Профилировщик можно подключить к запущенному процессу через меню Run и наблюдать за Timeline Graph в реальном времени. Выберите нужный временной интервал и откройте представление Memory Allocation (такое же, как в автономном приложении dotMemory Standalone). Оно позволяет анализировать выделенные объекты и дерево выделения для определенного интервала времени.

К сожалению, сделать снэпшоты памяти в этой версии пока нельзя.

Улучшения в консольной версии 2020.3

В консольном профилировщике теперь есть аргумент --saving-mode, который позволяет задать условия сохранения рабочего пространства dotMemory.

dotMemory в JetBrains Rider 2022.2

Теперь вы можете пользоваться dotMemory внутри JetBrains Rider:

  • Мы добавили два новых режима профилирования: Memory (sampled allocations) и Memory (full allocations). Они доступны в виджете Run и в разделе Run | Switch profiler configurations в главном меню. Подробнее о различиях между ними — в справке dotMemory.
  • Подключить профилировщик к запущенному процессу можно из меню Run.
  • Просматривайте график Timeline в динамике. Для этого достаточно выбрать временной интервал и открыть представление Memory Allocation. Как и в автономной версии dotMemory, оно позволит вам детально проанализировать выбранный временной интервал.

Версия 2022.2 плагина dotMemory не позволяет сохранять снэпшоты и работает только на Windows.

Поддержка дистрибутивов Linux на основе musl 2022.1

Консольный инструмент dotMemory теперь поддерживает Alpine версий 3.13–3.15. Поддерживаются следующие процессоры и фреймворки:

  • x64: .NET Core 3.1, .NET 5.0–6.0;
  • arm64: .NET 5.0–6.0.

Улучшенный API профилирования 2022.1

Теперь для снэпшота, генерируемого при помощи API профилирования, можно указать имя: DotMemory.GetSnapshot("snapshot name");

Это имя отобразится на странице Home | Snapshots.

Подключение к приложениям при помощи Drag-and-Drop 2022.1

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

Улучшение консольного инструмента 2022.1

Консольный инструмент dotMemory теперь показывает прогресс при сохранении снэпшота.

Оптимизация представления Similar Retention 2022.1

Теперь в представлении Similar Retention данные обрабатываются намного быстрее.

Поддержка процессоров Apple Silicon 2021.3

Консольный инструмент dotMemory теперь работает на компьютерах с процессорами Apple Silicon. Вы можете использовать его для профилирования приложений .NET 6 (нативный режим) и приложений .NET 5 (режим «Rosetta 2»).

Улучшения производительности 2021.3

Мы переделали алгоритм дерева доминаторов (график удержания объектов). Теперь, даже если вы имеете дело с сотнями миллионов объектов, dotMemory потребуется всего пара минут, чтобы открыть любое представление.

Семплированные данные о распределении памяти 2021.3

Теперь dotMemory может собирать семплированные данные о распределении памяти на основе событий ETW. Семплирование уступает в точности традиционному статистическому методу сбора данных о распределении памяти, но имеет ряд преимуществ:

  • Сбор данных методом семплирования не снижает производительность.
  • Семплирование не нужно подключать вручную — оно работает всегда.
  • Вы можете собирать семплированные данные, подключив профилировщик к запущенному приложению.

Обратите внимание, что эта возможность доступна только на Windows.

Представление Subsystems 2021.3

Представление Subsystems позволяет анализировать данные о распределении памяти. Подсистема группирует все методы, относящиеся к одному типу, пространству имен или сборке. В результате вы видите все объекты, созданные подсистемами, и общее дерево вызовов для каждой подсистемы.

Улучшения анализа распределения памяти 2021.2

Мы продолжаем улучшать возможности анализа распределения памяти. В представлении Memory Allocation появились две дополнительные вкладки:

  • Вкладка Methods перечисляет методы, для которых была выделена память.
  • На вкладке Call Tree вы сможете проанализировать дерево вызовов. Каждый узел дерева показывает не только вызванный метод, но и объекты, на которые была выделена память при вызове.

Улучшенные фильтры 2021.2

Пользоваться строкой поиска, доступной в верхней части представлений dotMemory, стало проще:

  • Появилась возможность сужать область поиска: #struct (только типы значений), #c (только типы), #m (только методы), #ns (только пространства имен).
  • Вы можете получить помощь по доступным фильтрам с учетом контекста.

Улучшенный экспорт объектов 2021.2

Теперь вы можете:

  • указывать желаемую глубину дерева зависимостей при экспорте данных объекта;
  • выбирать один и более тип и экспортировать соответствующие данные в один файл;
  • экспортировать данные объекта из представлений Instances, Outgoing References и Unreachable Objects

Обновление консольного профилировщика 2021.2

Включать и выключать сбор данных о распределении памяти теперь можно через служебные сообщения.

Копирование трассировки стека в буфер обмена 2021.2

Трассировка стека, скопированная в буфер обмена, теперь автоматически открывается в Rider / Visual Studio + ReSharper.

Новый начальный экран 2021.1

Мы полностью обновили начальный экран dotMemory. Теперь вам будет намного проще конфигурировать и запускать новые сеансы профилирования, работать со снэпшотами и выполнять другие базовые операции.

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

Поддержка дампов памяти Linux 2021.1

Теперь вы можете анализировать дампы памяти приложений .NET Core, полученные с Linux-систем при помощи gcore.

Улучшенный анализ распределения памяти

Улучшенный анализ распределения памяти 2021.1

Теперь dotMemory позволяет анализировать распределение памяти на любых интервалах времени. Просто выберите интервал на ленте времени — представление Memory Allocation покажет вам объекты, которым была выделена память за этот промежуток времени, а также соответствующую трассировку стека.

Скачать dotMemory

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