使用 NetBeans Profiler 5.5
分析性能
可以选择分析整个目标应用程序的性能,或者只分析部分应用程序的代码,甚至可以只分析特定的代码片段。
如何在 Profiler 中分析 CPU 性能
- 从主菜单中选择“性能分析”->“分析主项目”(
)。 - 在“选择性能分析任务”对话框中选择“分析性能”。
- 选择以下某个性能分析选项:
- 整个应用程序
- 部分应用程序
- 如果需要,可以指定一个现有过滤器,或者创建一个新的定制过滤器集合来过滤类。
- 单击对话框底部的“运行”以启动应用程序和监视任务。
要显示性能分析结果,请单击 "Profiler" 窗口中的“实时结果”按钮 (
)。将在“性能分析结果”标签中显示这些结果。
性能分析选项
应用程序性能
“应用程序性能”用于分析方法级 CPU 性能(执行时间)。可以选择分析整个应用程序或部分应用程序。
- 整个应用程序。
在此模式下,Profiler 对目标应用程序的所有方法进行分析。线程进入某个方法时将发出“方法进入”事件,退出该方法时将生成相应的“方法退出”事件。这两个事件都包含时间戳。该数据是实时处理的。
在分析部署到服务器上的应用程序(如企业应用程序和 Web 模块)或部署到 NetBeans 平台上的 NetBeans 模块或套件时,您也可以选择分析服务器或平台启动时的性能。如果选择此选项,在进行分析时,JVM 执行的第一个方法将用作根方法。
- 部分应用程序。
在此模式下,可以分析有限的部分应用程序代码。启动部分应用程序性能分析时,只有当某一应用程序线程进入性能分析根方法后,才会收集性能分析数据。通过分析限制的部分应用程序代码,可以大大减少性能分析开销。此外,对于某些程序来说,此选项可能是获取任何详细和/或实际性能数据的唯一方法,因为在分析整个应用程序时生成的数据量可能很大,而导致应用程序无法使用,甚至会导致应用程序崩溃(例如,由于意外超时)。
过滤类
通过过滤分析的类,可以进一步控制时间开销(以减少获取的信息量为代价)。可以从组合框的以下过滤器选项中进行选择,或者单击“定制过滤器”来创建定制的过滤器集合。
- 分析所有类
选择该选项将在不过滤类的情况下运行任务。
- 快速过滤器
此选项可打开“设置快速过滤器”对话框,可以在其中直接输入过滤器的类型和值。过滤器对分析的方法、类或包使用简单的“起始为”进行比较过滤,因此,过滤器值只能是有效的 Java 标识符。要指定多个条件,请使用空格或逗号(和空格)将它们分隔开,例如 "java., javax., sun."。

- 定义的过滤器集合
您可以选择预定义的 Profiler 过滤器(排除 Java 核心类),或者单击“定制过滤器”来定义您自己的过滤器集合(请参见创建定制的过滤器集合)。
创建定制的过滤器集合
在“定制过滤器集合”对话框中,可以创建和删除定义的过滤器集合,或者通过更改集合名称、类型或活动过滤器对其进行编辑。创建新的过滤器时,将在组合框的过滤器列表中显示该过滤器。

要创建定制过滤器,请命名定制过滤器,并从“全局过滤器”列表中选择任意过滤器组合。通过单击“编辑全局过滤器”,可以在“编辑全局过滤器”对话框中添加、删除和修改全局过滤器。请注意,每个过滤器集合或过滤器必须具有唯一的名称。
分析部分应用程序比分析整个应用程序所产生的开销将会根据选定子集的大小发生显著的变化。这是因为,应用程序生成性能分析数据时花费的时间较少,并且该工具处理这些数据时花费的时间也较少。
运行定制的性能分析模式提供了多种影响收集性能分析数据的 CPU 性能分析选项。
获取精确结果
Profiler 利用了 Sun 的 HotSpot JVM。运行应用程序时,许多 Java 字节代码会被编译为机器码(通常,对于编译而言,方法执行几千次就已经足够了)。如果给定的调用图形中的某些方法先前已被编译为机器码,则动态分析最初可能会对这些方法的执行造成非常大的干扰。这是因为,在分析一个方法时,以及它的原始字节代码和修改后的字节代码发生交换时,新代码会像开始执行应用程序时那样首先运行解释。然后,才按照标准策略再次对其进行编译。此外,对于一些本身不进行分析,但却调用了需要分析的方法的方法来说,也可能会发生临时切换到解释的情况。因此,在 Profiler 查找调用图形以及之后的一段时间内,应用程序的运行速度可能比正常情况慢很多,并且在此期间获得的 CPU 性能分析结果并不代表其正常执行时的情况。
建议您在启动调用图形分析后让应用程序运行一段时间,然后从主菜单中选择“性能分析”->“重置收集的结果”或在 "Profiler" 窗口中单击
“重置收集的结果”来丢弃已累积的性能分析结果(例如,如果是服务器端应用程序,可以让其处理几百或几千个请求)。此后收集的性能分析结果与实际情况匹配的效果要好得多。
另请参见
