dotMemory 最新变化

本页将介绍 dotMemory 和 dotMemory Unit 近期版本中的更新。 亮点包括命令行分析工具、.NET 应用程序支持,以及分析内存转储。

下载 dotMemory

可免费试用 30 天

对 MAUI 应用程序的支持

对 MAUI 应用程序的支持 2024.1

现在,您可以分析基于 MAUI 框架的应用程序。

目前,dotMemory 支持分析 Windows 上以 .NET 7.0+ 为目标的 WinUI 应用程序。

支持适用于独立 dotMemory 以及集成到 Rider 和 ReSharper 中的 dotMemory。

对 macOS 的改进支持 2024.1

  • 现在,dotMemory 的独立版本允许您指定应用程序包 (.app) 而不是可执行文件。
  • Rider 中的 dotMemory 可以分析 macOS 运行配置。 支持以下目标框架:net7.0-macosnet8.0-macos
dotMemory 中适用于 Linux 和 macOS 的新视图

dotMemory 中适用于 Linux 和 macOS 的新视图 2024.1

Linux 和 macOS 上的 dotMemory 独立版本更加接近其 Windows 对应版本,提供:

  • 用于分析对象集的 Similar Retention(类似保留)视图
  • 用于分析支配项对象的 Sunburst(旭日图)

对冻结对象堆的支持 2024.1

关于冻结对象堆中不可变对象的信息显示在时间线、 Heap Fragmentation(堆碎片)图和 Generations(生成)视图上。

Linux 和 macOS 上的独立版 dotMemory 2023.3 Beta

现在,您可以在 Linux 和 macOS 操作系统上运行独立版 dotMemory。

在 Linux 上分析进程转储 2023.3

dotMemory 现在允许您在 Linux 上作为常规快照导入和分析进程转储。 请注意,Linux 版的 dotMemory 只能导入从 Linux 操作系统上运行的进程中收集的转储。

JetBrains Rider 中的快照分析 2023.2

2023.2 之前,您在 Rider 中使用 dotMemory 时只能进行内存分配分析。 在 2023.2 中,您可以收集内存快照并在 Rider 中分析,就像在独立版本的 dotMemory 中一样。

  • 快照分析适用于 Windows、Linux 和 macOS。
  • 在 Windows 上,您还可以导入并分析进程转储。
  • 部分功能和视图不可用,例如自动快照检查和创建堆栈跟踪视图。

对 Windows ARM64 的支持 2022.3

现在,您可以在 ARM64 CPU 版本的 Windows 上使用 dotMemory。 这适用于所有版本:独立版 dotMemory、Rider 中的 dotMemory、Visual Studio 中的 dotMemory 和 dotMemory 命令行工具。

对 Linux ARM32 的支持 2022.3

现在,您可以在 ARM32 CPU 版本的 Linux 上运行 dotMemory 命令行分析器。 支持的框架为 .NET Core 3.1 和 .NET 5.0–7.0。

JetBrains Rider 中的 dotMemory 2022.3

除 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 中相同。 它可以分析特定时间范围内的分配对象和分配调用树。

不过,在这个版本中还不能收集内存快照。

dotMemory 命令行分析器中的改进 2022.3

命令行分析器现在具有 --saving-mode 实参,您可以使用它设置保存 dotMemory 工作区的条件。

JetBrains Rider 中的 dotMemory 2022.2

dotMemory 现在可以直接在 JetBrains Rider 中使用:

  • Run(运行)微件和主菜单中的 Run | Switch profiler configurations(运行 | 切换分析器配置)提供了两种新的分析模式:Memory (sampled allocations)(内存(采样分配))和 Memory (full allocations)(内存(完全分配))。 您可以在 dotMemory 帮助中详细了解它们的区别。
  • 您可以从 Run(运行)菜单将分析器附加到正在运行的进程。
  • 选择间隔,打开 Memory Allocation(内存分配)视图,即可实时观察 Timeline Graph(时间线图)。 它相当于 dotMemory Standalone 中的相同视图,允许您深入研究特定时间范围的分析。

dotMemory 插件不允许收集快照,仅适用于 Windows 上的 2022.2 版本。

对基于 musl 的 Linux 发行版的支持 2022.1

dotMemory 命令行工具现在支持 Alpine 版本 3.13–3.15。 支持以下 CPU 和框架:

  • x64:.NET Core 3.1、.NET 5.0–6.0。
  • arm64:.NET 5.0–6.0。

改进了分析 API 2022.1

借助分析 API 获取快照时,现在可以使用 DotMemory.GetSnapshot("snapshot name"); 指定快照名称

名称将显示在 dotMemory Home | Snapshots(首页 | 快照)页面上。

通过拖放附加到应用程序 2022.1

现在,将特殊图标拖到应用程序窗口上,即可将分析器附加到正在运行的应用程序。

命令行工具改进 2022.1

dotMemory 命令行工具现在在保存快照时会显示其进度。

改进了 Similar Retention(类似保留)视图的性能 2022.1

Similar Retention(类似保留)视图的数据处理速度现在显著加快。

对 Apple 芯片处理器的支持 2021.3

dotMemory 命令行工具现在可以在配备 Apple 芯片处理器的计算机上运行。 您现在可以使用 dotMemory CLT 分析 .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

现在可以:

  • 在导出对象数据时指定遍历深度。
  • 选择一个或多个类型并将其数据导出到单个文件。
  • InstancesOutgoing ReferencesUnreachable Objects 视图中导出对象数据。

控制台分析器更新 2021.2

现在,可以使用服务消息来启用和禁用内存分配数据收集。

将堆栈跟踪复制到剪贴板 2021.2

在 dotMemory 中,复制到剪贴板的堆栈跟踪现在会在 Rider/带 ReSharper 的 Visual Studio 中自动打开。

新的主屏幕 2021.1

我们重新设计了 dotMemory 的主屏幕 - 配置和启动新的分析会话、使用快照以及执行其他基本操作变得更加轻松。

Linux 转储支持

Linux 转储支持 2021.1

现在,您可以使用 gcore 分析在 Linux 系统上收集的 .NET Core 应用程序转储。

改进了内存分配分析

改进了内存分配分析 2021.1

现在,您可以使用 dotMemory 分析任意时间区间内的内存分配。 在时间轴上选择区间后,Memory Allocation 视图将显示该区间分配的对象,以及分配这些对象的堆栈跟踪。

下载 dotMemory

可免费试用 30 天