控制分析会话
运行分析会话后,dotMemory 将打开新的 分析 选项卡并启动被分析的应用程序。

要控制分析过程,请使用页面顶部的以下按钮
:
| 获取在进程列表 获取快照不会中断分析过程,允许您获取另一个快照(例如,稍后可以与第一个快照进行比较)。 完成快照捕获后,您可以继续 分析分析结果。 |
| 打开 按条件获取快照 窗口。 使用此窗口,您可以配置 dotMemory 在触发特定条件时自动获取快照。 了解详情 |
完整分配数据 | 关闭 (默认):分析器收集有关内存分配调用的采样数据,包括分配对象的大致大小。 此模式不会影响应用程序性能。 带有采样数据的时间间隔在时间线图 开启 :分析器收集分配内存调用的详细数据,包括分配对象的确切大小和数量。 此模式会显著降低被分析应用程序的速度。 带有完整数据的时间间隔在时间线图 |
| 强制应用程序执行完整的垃圾回收。 |
分离 | 将分析器从应用程序中分离,但保持应用程序运行。 仅当您将分析器附加到已运行的应用程序时, 分离 操作才可用。 |
| 终止当前选定的应用程序进程。 谨慎使用 终止 :无条件终止进程可能导致应用程序正在处理的数据丢失。 通常,您应正常关闭被分析的应用程序。 |
| 终止应用程序的所有进程。 仅当您分析运行多个进程的应用程序时,进程列表和 全部终止 按钮才会显示。 |
分析多进程应用程序
如果您的独立或 .NET Core 应用程序运行多个进程,您可以获取特定进程的内存快照。
获取特定进程的快照
使用 进程过滤器开始分析,该过滤器允许分析整个进程树。 例如,您可以选择预定义的 整个进程树 过滤器。
分析会话开始后,从列表
中选择所需的进程。点击 获取快照。
查看实时分析数据
时间线图
有两个主要用途:
它显示您的应用程序实时的内存使用情况。 时间线由多个图表组成,显示以下内容:
非托管内存: 非托管内存的即时大小。 要添加此图表,请在 显示非托管的内存 复选框中选择
。堆代 0、1、2, 大对象堆 (LOH) :Gen0、Gen1、Gen2 堆和大对象堆的即时大小。
自垃圾回收以来已在 LOH 中分配 :自上次垃圾回收以来分配到大对象堆的对象的即时大小(每次 GC 后,图表从零重新开始)。 使用此图表了解 LOH 分配发生的时间(例如,在应用程序启动时、某些工作期间等)以及分配的强度(例如,应用程序可能有一些显著的 LOH 内存流量,但不会改变 LOH 的大小)。
它允许您选择一个时间间隔以 分析内存分配。
按条件获取快照
有时,您可能只对在某些条件发生时获取快照感兴趣。 最常见的情况是当您的应用程序的内存使用量显著增加时获取快照。 由于手动执行此操作(使用 获取快照 按钮)相当复杂,dotMemory 允许您自动化此过程。 您只需设置一个特定条件,快照将在条件发生后自动收集。 目前支持以下条件:
内存使用量增加(以 MB 为单位)。
内存使用量增加(以百分比为单位)。
时间间隔(以分钟为单位,定期获取快照)。
要更精确地控制快照获取条件(例如,在程序的特定执行点获取快照),请使用 dotMemory API。
启用按条件收集快照
分析会话开始后,点击 按条件获取快照 按钮,位于 分析控制中。
在 自动获取快照 部分中选择所需的条件并为其指定特定值:
如果内存消耗量增加 [X] MB – 当内存使用量*超过基线 X MB 时,自动获取快照。 第一个基线是您点击 启动 按钮时的内存使用量,位于 按条件获取快照 窗口中。 条件发生后,dotMemory 获取快照,此时的内存使用量成为新的基线。
如果内存消耗量增加 [X] % – 当内存使用量超过基线 X 百分比时,自动获取快照。 第一个基线是您点击 启动 按钮时的内存使用量,位于 按条件获取快照 窗口中。 条件发生后,dotMemory 获取快照,此时的内存使用量成为新的基线。
如果内存消耗量超过 [X] MB – 当总内存使用量(绝对值)超过 X MB 时,自动获取快照。
每 [X] 分钟 – 每 X 分钟自动获取快照。
如果您希望 dotMemory 获取的快照不超过 X 个,请选择 将快照的最大数量限制为 [X] 复选框。 如果磁盘空间有限,此选项可能会很有用。
点击 启动。
禁用按条件收集快照
点击 按条件获取快照 按钮,位于 分析控制中。
点击 停止。