dotMemory 最新变化

此页面详细介绍了 dotMemory 中的最新更新和变化。

下载 dotMemory

可免费试用 30 天

用户界面 2024.3

2024.3 更新引入了许多小型 UX/UI 改进,以及一些收尾工作,这些收尾工作使所有操作系统上的所有 dotMemory 版本都具有统一的外观。

对象实例的 Creation Stack Trace(创建堆栈跟踪)视图 2024.3

我们重新引入了 Creation Stack Trace(创建堆栈跟踪)视图,该视图此前在 UI 重新设计时被移除。 此视图显示导致对象创建的函数调用堆栈,帮助您更轻松地找出内存问题的根本原因。

对象集的 Back Traces(反向跟踪)视图 2024.3

我们还重新实现了对象集的 Back Traces(反向跟踪)视图。 视图中的倒置调用树显示了从创建特定对象集的函数开始,从下到上的调用链。

使用冰柱图直观显示支配项 2024.3

支配项树现在能够显示为冰柱图,显示支配项和保留对象的内存消耗。 此功能适用于 Windows、Linux 和 macOS 上的独立版 dotMemory 和 JetBrains Rider 中的 dotMemory。

带有旭日图的 Call Tree(调用树)现已在所有操作系统上可用 2024.3

Call Tree(调用树)直观显示为旭日图的功能在版本 2024.2 中引入,现在可用于 Windows、Linux 和 macOS 上的独立版 dotMemory 和 JetBrains Rider 中的 dotMemory。

改进的实例搜索 2024.2

我们在 Instances(实例)视图中添加了新的筛选选项:

  • Search by string value(按字符串值搜索):在筛选器字段中输入任意字符串值,dotMemory 将高亮显示匹配的字符串。 这有助于根据内容查找特定字符串实例。
  • 字符串值的正则表达式支持:使用正则表达式进行更高级的搜索。 例如,^nAsso.{5,}ID$nAssociatedObjectID.nAssociatedObjectID 一致。
  • 按对象地址搜索:您还可以通过内存地址搜索对象实例。 这适用于直接跟踪特定对象。

这些功能在独立版 dotMemory 和 JetBrains Rider 中的 dotMemory 中可用。

Linux 和 macOS 版 dotMemory 的改进 2024.2

Linux 和 macOS 版 dotMemory 获得了此前仅在 Windows 上可用的功能:

  • 自动内存检查:Linux 和 macOS 版 dotMemory 获得了 Inspections(检查)视图,此视图可以显示多个自动检测到的内存问题。
  • 跨工作区快照比较:现在,您可以比较来自不同分析会话的快照。

这些功能在独立版 dotMemory 和 JetBrains Rider 中的 dotMemory 中可用。

使用 Sunburst 图直观呈现 Call Tree(调用树)2024.2

现在,Call Tree(调用树)可以显示为 Sunburst(旭日)图,高亮显示分配最多内存的函数。 这项功能在独立版 dotMemory(Linux 和 macOS)和 JetBrains Rider 中的 dotMemory(Windows、Linux 和 macOS)中可用。

对 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 中的相同视图,允许您深入研究特定时间范围的分析。

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 天