Здесь вы узнаете о новых возможностях в свежих версиях dotMemory и dotMemory Unit. Обновления включают в себя улучшенный консольный профилировщик, поддержку приложений .NET и анализ дампов памяти.
Доступна бесплатная пробная версия на 30 дней
В новой версии можно профилировать приложения на основе фреймворка 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 дней