На этой странице рассказывается о свежих обновлениях и изменениях в dotMemory.
Доступна бесплатная пробная версия на 30 дней
В интерфейс версии 2024.3 внесено много небольших улучшений, и он был доработан, чтобы все версии dotMemory во всех операционных системах выглядели и работали одинаково.
Мы вернули представление Creation Stack Trace, которое раньше было удалено при переработке интерфейса. Оно показывает стек вызовов функции, который привел к созданию объекта, и упрощает поиск причины проблем с памятью.
Мы вернули также представление Back Traces для наборов объектов. В нем отображается инвертированное дерево вызовов, которое показывает цепочку вызовов снизу вверх, начиная с функции, создавшей определенный набор объектов.
Доминаторное дерево теперь может отображаться как сосульчатая диаграмма, показывая потребление памяти доминатором и удерживаемыми объектами. Эта функция доступна в Windows, Linux и macOS как в автономной версии dotMemory, так и в dotMemory в JetBrains Rider.
В версии 2024.2 впервые стало можно представить дерево вызовов (Call Tree) в виде диаграммы «солнечные лучи», а теперь эта функция доступна в Windows, Linux и macOS как в автономной версии dotMemory, так и в dotMemory в JetBrains Rider.
Мы добавили новые возможности фильтрации в представлении Instances:
^nAsso.{5,}ID$
соответствует nAssociatedObjectID.nAssociatedObjectID
. Эти функции доступны в автономной версии dotMemory, а также в dotMemory в JetBrains Rider.
В версии dotMemory для Linux и macOS появились функции, которые до сих пор были доступны только в Windows:
Эти функции доступны в автономной версии dotMemory, а также в dotMemory в JetBrains Rider.
В новой версии дерево вызовов Call Tree можно отобразить в виде диаграммы «солнечные лучи» (Sunburst), где будут выделены функции, которые используют больше всего памяти. Функция доступна в автономной версии dotMemory (Linux и macOS), а также в dotMemory в JetBrains Rider (Windows, Linux и macOS).
В новой версии можно профилировать приложения на основе фреймворка MAUI.
В настоящее время dotMemory поддерживает только профилирование приложений WinUI для .NET 7.0+ в Windows.
Это касается и автономного dotMemory, и dotMemory в Rider и ReSharper.
.app
) вместо исполняемых файлов. net7.0-macos
, net8.0-macos
. В автономном инструменте dotMemory для Linux и macOS появились функции, которые уже были доступны в версии для Windows:
Информация о неизменяемых объектах Frozen Object Heap показывается на хронологическом графике, на диаграмме Heap Fragmentation и в представлении Generations.
Теперь в операционных системах Linux и macOS можно использовать автономную версию.
В новой версии dotMemory можно импортировать и анализировать дампы как обычные снэпшоты Linux. Обратите внимание: в версии dotMemory для Linux можно импортировать только дампы процессов, запущенных в Linux OS.
В прежних версиях Rider модуль dotMemory можно было использовать только для анализа распределения памяти. Теперь же можно собирать снэпшоты памяти и анализировать их в Rider точно так же, как в автономной версии dotMemory.
Теперь dotMemory можно использовать в Windows на процессорах ARM64. Это относится ко всем версиям dotMemory: и к автономной версии, и к инструменту, запускаемому в Rider, Visual Studio и из консоли.
Теперь можно использовать консольную версию dotMemory в Linux на процессорах ARM32. Поддерживаемые фреймворки — .NET Core 3.1 и .NET 5.0–7.0.
Помимо 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). Оно позволяет анализировать выделенные объекты и дерево выделения для определенного интервала времени.
К сожалению, сделать снэпшоты памяти в этой версии пока нельзя.
В консольном профилировщике теперь есть аргумент --saving-mode
, который позволяет задать условия сохранения рабочего пространства dotMemory.
Теперь вы можете пользоваться dotMemory внутри JetBrains Rider:
Версия 2022.2 плагина dotMemory не позволяет сохранять снэпшоты и работает только на Windows.
Консольный инструмент dotMemory теперь поддерживает Alpine версий 3.13–3.15. Поддерживаются следующие процессоры и фреймворки:
Теперь для снэпшота, генерируемого при помощи API профилирования, можно указать имя: DotMemory.GetSnapshot("snapshot name");
Это имя отобразится на странице Home | Snapshots.
Теперь, чтобы подключить профилировщик к запущенному приложению, достаточно перетащить в окно приложения специальную иконку.
Консольный инструмент dotMemory теперь показывает прогресс при сохранении снэпшота.
Теперь в представлении Similar Retention данные обрабатываются намного быстрее.
Консольный инструмент dotMemory теперь работает на компьютерах с процессорами Apple Silicon. Вы можете использовать его для профилирования приложений .NET 6 (нативный режим) и приложений .NET 5 (режим «Rosetta 2»).
Мы переделали алгоритм дерева доминаторов (график удержания объектов). Теперь, даже если вы имеете дело с сотнями миллионов объектов, dotMemory потребуется всего пара минут, чтобы открыть любое представление.
Теперь dotMemory может собирать семплированные данные о распределении памяти на основе событий ETW. Семплирование уступает в точности традиционному статистическому методу сбора данных о распределении памяти, но имеет ряд преимуществ:
Обратите внимание, что эта возможность доступна только на Windows.
Представление Subsystems позволяет анализировать данные о распределении памяти. Подсистема группирует все методы, относящиеся к одному типу, пространству имен или сборке. В результате вы видите все объекты, созданные подсистемами, и общее дерево вызовов для каждой подсистемы.
Мы продолжаем улучшать возможности анализа распределения памяти. В представлении Memory Allocation появились две дополнительные вкладки:
Пользоваться строкой поиска, доступной в верхней части представлений dotMemory, стало проще:
Теперь вы можете:
Включать и выключать сбор данных о распределении памяти теперь можно через служебные сообщения.
Трассировка стека, скопированная в буфер обмена, теперь автоматически открывается в Rider / Visual Studio + ReSharper.
Мы полностью обновили начальный экран dotMemory. Теперь вам будет намного проще конфигурировать и запускать новые сеансы профилирования, работать со снэпшотами и выполнять другие базовые операции.
Теперь вы можете анализировать дампы памяти приложений .NET Core, полученные с Linux-систем при помощи gcore
.
Теперь dotMemory позволяет анализировать распределение памяти на любых интервалах времени. Просто выберите интервал на ленте времени — представление Memory Allocation покажет вам объекты, которым была выделена память за этот промежуток времени, а также соответствующую трассировку стека.
Доступна бесплатная пробная версия на 30 дней