本页详细介绍了 dotMemory 的最新更新和变化。
可免费试用 30 天
2024.3 更新引入了许多小型 UX/UI 改进,以及一些收尾工作,使所有操作系统上的所有 dotMemory 版本都具有统一的外观和感觉。
我们重新引入了 Creation Stack Trace(创建堆栈跟踪)视图,该视图此前在 UI 重新设计时被移除。 此视图显示导致对象创建的函数调用堆栈,帮助您更轻松地找出内存问题的根本原因。
我们还重新实现了对象集的 Back Traces(反向跟踪)视图。 视图中的倒置调用树显示了从创建特定对象集的函数开始,从下到上的调用链。
支配项树现在能够表现为冰柱图形式,显示支配项和保留对象的内存消耗。 此功能适用于 Windows、Linux 和 macOS 上的独立版 dotMemory 和 JetBrains Rider 中的 dotMemory。
将 Call Tree(调用树)可视化为旭日图的功能在版本 2024.2 中引入,现在可用于 Windows、Linux 和 macOS 上的独立版 dotMemory 和 JetBrains Rider 中的 dotMemory。
我们在 Instances(实例)视图中添加了新的筛选选项:
^nAsso.{5,}ID$
与 nAssociatedObjectID.nAssociatedObjectID
一致。 这些功能在独立版 dotMemory 和 JetBrains Rider 中的 dotMemory 中可用。
Linux 和 macOS 版 dotMemory 获得了此前仅在 Windows 上可用的功能:
这些功能在独立版 dotMemory 和 JetBrains Rider 中的 dotMemory 中可用。
现在,Call Tree(调用树)可以显示为 Sunburst(旭日)图,高亮显示分配最多内存的函数。 这项功能在独立版 dotMemory(Linux 和 macOS)和 JetBrains Rider 中的 dotMemory(Windows、Linux 和 macOS)中可用。
现在,您可以分析基于 MAUI 框架的应用程序。
目前,dotMemory 支持分析 Windows 上以 .NET 7.0+ 为目标的 WinUI 应用程序。
支持适用于独立 dotMemory 以及集成到 Rider 和 ReSharper 中的 dotMemory。
.app
) 而不是可执行文件。 net7.0-macos
、net8.0-macos
。 Linux 和 macOS 上的 dotMemory 独立版本更加接近其 Windows 对应版本,提供:
dotMemory 现在允许您在 Linux 上作为常规快照导入和分析进程转储。 请注意,Linux 版的 dotMemory 只能导入从 Linux 操作系统上运行的进程中收集的转储。
2023.2 之前,您在 Rider 中使用 dotMemory 时只能进行内存分配分析。 在 2023.2 中,您可以收集内存快照并在 Rider 中分析,就像在独立版本的 dotMemory 中一样。
现在,您可以在 ARM64 CPU 版本的 Windows 上使用 dotMemory。 这适用于所有版本:独立版 dotMemory、Rider 中的 dotMemory、Visual Studio 中的 dotMemory 和 dotMemory 命令行工具。
现在,您可以在 ARM32 CPU 版本的 Linux 上运行 dotMemory 命令行分析器。 支持的框架为 .NET Core 3.1 和 .NET 5.0–7.0。
除 Windows 外,dotMemory 现在也可用于 Linux 和 macOS 上的 JetBrains Rider。 Run(运行)微件和 Run | Switch profiler configuration(运行 | 切换分析器配置)菜单提供了两种新的分析模式:Memory (sampled allocations)(内存(采样分配))和 Memory (full allocations)(内存(完全分配))。 您可以在 dotMemory 的帮助中详细了解它们之间的差异。
您可以从 Run(运行)菜单将分析器附加到正在运行的进程,实时查看 Timeline Graph(时间线图)展开。 选择时间间隔以打开 Memory Allocations(内存分配)视图,这与 dotMemory Standalone 中相同。 它可以分析特定时间范围内的分配对象和分配调用树。
不过,在这个版本中还不能收集内存快照。
命令行分析器现在具有 --saving-mode
实参,您可以使用它设置保存 dotMemory 工作区的条件。
dotMemory 现在可以直接在 JetBrains Rider 中使用:
dotMemory 插件不允许收集快照,仅适用于 Windows 上的 2022.2 版本。
dotMemory 命令行工具现在支持 Alpine 版本 3.13–3.15。 支持以下 CPU 和框架:
借助分析 API 获取快照时,现在可以使用 DotMemory.GetSnapshot("snapshot name");
指定快照名称
名称将显示在 dotMemory Home | Snapshots(首页 | 快照)页面上。
dotMemory 命令行工具现在在保存快照时会显示其进度。
Similar Retention(类似保留)视图的数据处理速度现在显著加快。
dotMemory 命令行工具现在可以在配备 Apple 芯片处理器的计算机上运行。 您现在可以使用 dotMemory CLT 分析 .NET 6 应用程序(原生模式)和 .NET 5 应用程序(Rosetta 2 模式)。
我们完全重新设计了支配树(对象保留图)背后的算法。 即使对象集包含数亿个对象,dotMemory 也只需几分钟即可打开特定视图。
dotMemory 现在可以根据 ETW 事件获取有关内存分配的采样数据。 与收集分配数据的传统(统计)方式相比,采样的准确性较低,但具有许多优点:
注意,此功能仅在 Windows 上可用。
您现在可以使用 Subsystems(子系统)视图分析内存分配数据。 子系统将所有方法按所属类型、命名空间或程序集分组。 结果视图显示了子系统创建的对象以及每个子系统的合并调用树。
在此版本中,我们继续改进您分析内存分配的方式。 Memory Allocation 视图中增加了两个新的标签页:
dotMemory 视图顶部的搜索栏现在更加灵活,更易使用:
现在可以:
现在,可以使用服务消息来启用和禁用内存分配数据收集。
在 dotMemory 中,复制到剪贴板的堆栈跟踪现在会在 Rider/带 ReSharper 的 Visual Studio 中自动打开。
现在,您可以使用 gcore
分析在 Linux 系统上收集的 .NET Core 应用程序转储。
现在,您可以使用 dotMemory 分析任意时间区间内的内存分配。 在时间轴上选择区间后,Memory Allocation 视图将显示该区间分配的对象,以及分配这些对象的堆栈跟踪。
可免费试用 30 天