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(反向跟踪)视图。 视图中的倒置调用树显示了从创建特定对象集的函数开始,从下到上的调用链。

Ability to visualize dominators with an icicle chart 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 天