注释
本文特定于 .NET Framework。 它不适用于 .NET 的较新版本实现,包括 .NET 6 及更高版本。
性能分析是在任何开发或部署情境中收集性能数据的方法。 本部分适用于想要收集有关应用程序性能信息的开发人员和系统管理员。
通过性能监视器来跟踪系统性能(Perfmon.exe)
性能监视器是用于分析 .NET Framework 应用程序的最简单工具。 性能监视器以图形方式表示使用公共语言运行时和 Windows SDK 安装的 .NET Framework 性能计数器中找到的数据。 这些计数器可用于监视从内存管理到实时 (JIT) 编译器性能的所有内容。 他们告诉你应用程序使用的资源,这是应用程序性能的间接度量值。 使用这些计数器了解应用程序在内部的工作原理。
在 Windows Vista 及更高版本上运行 Perfmon.exe
在命令提示符下,键入 perfmon。 性能监视器控制台出现。
在 “监视工具” 文件夹中,单击“ 性能监视器”。
在“性能监视器”工具栏中,单击 “添加” 图标(加号),如果存在。 如果不存在,请在监视器窗口中右键单击并选择 “添加计数器 ”选项。
这将打开 “添加计数器 ”对话框。 “可用计数器”列表框显示可用的性能对象。 .NET Framework 应用程序有许多预定义对象,包括内存管理(.NET CLR 内存)、互作性(.NET CLR 互作)、异常处理(.NET CLR 异常)和多线程处理(.NET CLR LocksAndThreads)。 每个性能对象都包含多个单独的性能计数器。 有关性能监视器中可用的性能计数器的列表,请参阅 性能计数器。
选中性能对象名称旁边的复选框以查看它支持的各个性能计数器的列表。
单击要查看的性能计数器。
在所选对象列表框的实例中,单击“所有实例<”>以指定要全局监视公共语言运行时的性能计数器(即,在系统范围内)。
-或-
在 所选对象列表框的实例 中,单击应用程序名称以监视该应用程序的性能计数器。
若要区分多个版本的运行时,或者要消除具有相同名称的多个应用程序,还必须修改注册表项。 有关详细信息,请参阅 Performance Counters and In-Process Side-By-Side Applications。
注释
当性能控制台运行时安装新的性能计数器时,请停止并重启性能控制台以使新计数器可见。
要分析位于某一区域或远程共享中的程序集,请确保该远程程序集在运行性能计数器的计算机上完全受信任。 如果程序集没有足够的信任,则性能计数器将不起作用。 有关向不同区域授予信任的信息,请参阅 Caspol.exe(代码访问安全策略工具)。
注释
在安装了 .NET Framework 4 的系统上,对于使用 .NET Framework 1.1 开发的应用程序,性能监视器可能无法显示某些类别(如 .NET CLR 数据和.NET CLR 网络)的性能计数器的数据。 如果是这种情况,可以通过将 forcePerformanceCounterUniqueSharedMemoryReads< 元素添加到>应用程序的配置文件来配置性能监视器以显示此数据。
以编程方式读取和创建性能计数器
.NET Framework 提供可用于以编程方式访问性能控制台中提供的相同性能信息的类。 还可以使用这些类创建自定义性能计数器。 下表介绍了 .NET Framework 中提供的一些性能监视类。
班级 | DESCRIPTION |
---|---|
System.Diagnostics.PerformanceCounter | 表示 Windows 性能计数器组件。 使用此类可读取现有预定义或自定义计数器,并向自定义计数器发布(写入)性能数据。 |
System.Diagnostics.PerformanceCounterCategory | 提供几种方法,用于与计算机上的计数器和计数器类别进行交互。 |
System.Diagnostics.PerformanceCounterInstaller | 为PerformanceCounter 组件指定安装程序。 |
System.Diagnostics.PerformanceCounterType | 为 NextValue 指定用于计算 PerformanceCounter 的方法。 |