可以使用 .NET 对象分配工具查看应用使用的内存量以及代码路径分配的最大内存量。

运行该工具后,可以看到正在分配对象的函数执行路径。 然后,可以追溯到占用最多内存的调用树的根。

有关如何使用 .NET 对象分配工具提高性能的教程,请参阅 案例研究:优化代码初学者指南。

安装

在 Visual Studio 项目中,将解决方案配置设置为 Release 并选择部署目标。

部署目标通常与项目名称匹配,表示本地部署。

部署目标通常是 本地 Windows 调试器 (或 本地计算机)。

选择 Alt+F2 以在 Visual Studio 中打开性能探查器。

选中 .NET 对象分配跟踪 复选框。

选择 “开始”按钮以运行该工具。

如果在启动探查器之前启用了“在暂停后开始收集”选项,则在诊断会话视图中选择“记录”按钮之前,不会收集数据。

在此工具开始运行后,在应用中完成要探查的方案。 然后选择 停止收集 或关闭应用以查看数据。

选择 分配 选项卡。将显示类似于以下内容的内存分配数据。

现在可以分析对象的内存分配。

在收集过程中,跟踪工具可能会减慢被探查的应用的速度。 如果跟踪工具或应用的性能缓慢,并且不需要跟踪每个对象,则可以调整采样率。 为此,请在探查器摘要页中选择跟踪工具旁边的齿轮符号。

将采样率调整为所需的速率。 此更改有助于在收集和分析期间加快应用的性能。

有关如何提高工具效率的详细信息,请参阅 优化探查器设置。

了解数据

在以下图形视图中,顶部图形显示应用中的实时对象数。 最下面的“对象增量”图显示了应用对象数变化率 (%)。 红色条表示垃圾回收何时发生。

可以通过选择时间范围来筛选表格数据,以便仅显示指定时间范围的活动。 执行此操作时,选项卡中显示的信息的范围限定为筛选的时间范围。

还可以放大或缩小图形。

洞见

如果 Insights (见解 ) 视图中显示任何见解,请使用提供的链接获取有关已识别问题的更多信息。

获取 AI 帮助

如果你有 Copilot,则可以在查看顶级见解时获得 AI 帮助。 Copilot 提供与一组特定性能见解相关的信息和见解。 借助 Copilot,还可以使用内存最多的对象提问,这有助于生成更高效或经济高效的代码。

“询问 Copilot”按钮的“询问 Copilot”按钮屏幕截图。即使未识别任何特定的性能见解,也会显示。 选择 “询问 Copilot”以从 Copilot 学习并开始提问。

分配

分配 视图显示分配内存的对象的位置以及这些对象分配的内存量。

以下信息显示在 分配 视图中:

所有这些列都是可排序的。 对于 类型 和 模块名称 列,可以按字母顺序按升序或降序对项进行排序。 对于 分配、字节 和 平均大小(字节),您可以按数值升序或降序对项目进行排序。

符号

以下符号显示在 分配、调用树和 函数 选项卡中:

调用树

调用树 视图显示包含分配大量内存的对象的函数执行路径。

以下信息显示在 调用树 视图中:

“调用树”视图中显示的其他选项包括:

Functions

Functions 视图显示分配内存的进程、模块和函数。

“函数”视图中显示的信息包括:

集合

集合 视图显示垃圾回收期间收集或保留的对象数。

以下信息显示在 集合 视图中。

选择行时,此视图还会显示饼图,以便按类型直观展示收集的对象和存活的对象。

筛选工具

“分配”、“调用树”和“函数”视图都包含“仅显示我的代码”和“显示本机代码”选项,以及一个筛选器框。

免责声明:本站为个人博客,博客所发布的一切修改补丁、注册机和注册信息及软件的文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 访问和下载本站内容,说明您已同意上述条款。本站为非盈利性站点,VIP功能仅仅作为用户喜欢本站捐赠打赏功能,本站不贩卖软件,所有内容不作为商业行为。