收集 .NET 内存分配数据和生存期数据
Visual Studio 分析工具支持收集 .NET 内存分配数据和对象生存期数据,这些数据可帮助您检测应用程序中与内存相关的性能问题。
有关 .NET 内存分配的数据包括所分配的 .NET Framework 内存对象的大小和数量。
对象生存期数据包括在三代垃圾回收中回收的 .NET Framework 内存对象的大小和数量。
要求
- Visual Studio 旗舰版, Visual Studio 高级专业版, Visual Studio 专业版
备注
在 Windows 8 增强的安全功能和 Windows server 2012 要求已在 Visual Studio 探查器将收集有关这些平台的数据的方式的重大更改。Windows 存储 app 还需要新的集合技术。请参见 分析 Windows 8 和 Windows Server 2012 应用程序。
可以使用采样或检测分析方法收集数据。
使用采样方法时,探查器跟踪所有已启动或附加到的过程所生成的 .NET 内存分配和对象。
使用检测方法时,探查器仅跟踪被检测模块所生成的那些 .NET 内存分配和对象。
重要
使用采样方法收集 .NET 内存数据(分配和/或对象生存期)时,将忽略所有用户指定的采样事件,而使用相应的内存分配事件来收集数据。
如果允许分析 .NET 内存分配,则还要启用“分配”视图。 如果允许分析 .NET 生存期数据,则还要启用“对象生存期”视图。 有关更多信息,请参见.NET 内存分配视图和“对象生存期”视图。
有关如何使用分析工具命令行工具收集 .NET 内存数据的信息,请参见从命令行使用分析方法收集性能数据中的“使用 .NET 内存方法收集内存分配数据和对象生存期数据”。
收集 .NET 内存数据
在**“性能资源管理器”中,右击性能会话,然后单击“属性”**。
在 性能会话属性页 对话框中,单击 常规 选项卡,然后选择 收集 .NET 对象分配信息 复选框。
若要收集 .NET 对象生存期数据,请选中**“还收集 .NET 对象的生存期信息”**复选框。
常规任务
在性能会话的“性能会话 属性页”对话框中,可以指定其他选项。 打开此对话框:
- 在**“性能资源管理器”中,右击性能会话名称,然后单击“属性”**。
下表中的任务说明在收集 .NET 内存数据时,可以在“性能会话 **属性页”**对话框中指定的选项。
任务 |
相关内容 |
---|---|
在“常规”页上,指定生成的分析数据 (.vsp) 文件的命名详细信息。 |
|
在“启动”页上,选择代码解决方案中有多个 .exe 项目时要启动的应用程序。 |
|
在“层交互”页上,向分析运行添加 ADO.NET 调用数据。 |
|
在“Windows 事件”页上,指定要随采样数据收集的一个或多个 Windows 事件跟踪 (ETW) 事件。 |
|
在“Windows 计数器”页上,指定要作为标记添加到分析数据的一个或多个操作系统性能计数器。 |
|
在“高级”页上,指定在应用程序模块使用多个 .NET Framework 运行时版本时,要分析的运行时版本。 默认情况下分析加载的第一个版本。 |
检测任务
下表中的任务是使用检测方法进行分析时专用的**“属性页”**对话框中的选项。
任务 |
相关内容 |
---|---|
在“二进制文件”页上,指定检测的模块副本的位置。 默认情况下,原始二进制文件会移入备份文件夹。 |
|
在“检测”页上,从分析中排除小型函数以减少分析开销,分析 ASP.NET 网页中的 JavaScript 代码,并指定在检测过程之前和之后要在命令提示符下运行的命令。 |
|
在“CPU 计数器”页上,指定要添加到分析数据的一个或多个处理器性能计数器。 |
|
在“高级”页上,指定所需的任何其他 VSInstr.exe 选项,如用于包含或排除特定函数的选项。 有关 VSInstr 选项的更多信息,请参见 VSInstr |