标签:http java 使用 strong io 文件 数据 for
NetBeans IDE 6.0 包含一个强大的性能分析工具,可提供与应用程序运行时行为有关的重要信息。通过 NetBeans 性能分析工具,我们可以方便地在 IDE 中监控应用程序的线程状态、CPU 性能以及内存使用情况,而且产生的开销相对较少。
本文将概述 IDE 中包含的性能分析工具,并指导您快速开始分析 NetBeans 项目的性能。本文旨在演示 IDE 中可用的各种性能分析任务以及分析项目性能时可以获得的分析结果。但并不覆盖 IDE 中包含的所有性能分析功能,也不会深入探索如何研究性能分析结果以解决应用程序中存在的特定执行问题。
在本文档中,我们将使用性能分析工具获得有关 Anagram Game 示例应用程序的性能分析数据,该应用程序是 IDE 提供的一个简单 Java 应用程序。尽管 Anagram Game 是一个非常简单的 Java 应用程序项目,但是当您分析更大、更复杂的 Java 应用程序以及 Web 和企业应用程序项目时,仍然需要遵循同样的步骤。
本文档将演示如何使用 IDE 来分析应用程序并获得以下分析结果:
另外,本文档还将演示如何创建分析结果快照,并比较分析结果。
预计时间: 40 分钟
本文档假定您拥有以下技术的基本知识或者具备相关编程经验:
要使用本教程,您需要在计算机上安装以下软件:
NetBeans IDE 绑定了本性能分析工具,因此不需要任何特殊步骤就可以开始分析应用程序的性能。
第一次使用性能分析工具时,IDE 需要执行一些初始化操作,以确保可以获得精确的分析结果并将该工具和项目集成在一起。为展示这一点,我们首先将创建 AnagramGame 项目,然后运行校准。第一次分析 AnagramGame 项目的性能时,IDE 将会自动执行集成。
在本文档中,我们将分析 Anagram Game 示例应用程序的性能。为了完成此任务,首先使用 New Project 向导创建该示例应用程序。
要创建 Anagram Game 应用程序,请执行以下步骤:
单击 Finish 按钮,IDE 将创建一个 Anagram Game 示例项目。您将可以在 Projects 窗口看到 Anagram Game 项目,并且该名称显示为粗体,表示该项目被设为主项目。默认情况下,使用 IDE 分析项目性能时,IDE 将分析主项目的性能。
为了获得精确的分析结果,我们必须拥有用于性能分析的每个 Java 平台的校准数据。如果是第一次运行性能分析工具,或者无法获得该 Java 平台的有效校准数据,系统会提示为您的平台运行校准进程。
校准只需要执行一次。但是,如果您对机器的配置进行了任何可能影响其性能的重大更改,则需要再次运行校准。您可以通过执行以下步骤在任何时候运行校准:
校准操作完成后,会出现一个对话框,显示有关校准结果的信息。每个 Java 平台的校准数据保存在主目录中的.nbprofile 目录中。
第一次分析项目的性能时,您将会看到一个对话框,提示 IDE 需要将性能分析工具和目标项目集成。为了与项目集成,IDE 会修改项目的构建脚本,为所需的性能分析库导入一个其他的构建脚本。在修改构建脚本之前,IDE 会创建一个原构建脚本的备份。
要和项目集成性能分析工具,在对话框中单击 OK 按钮。IDE 将创建一个 build.xml 的备份,其名称为 build-before-profiler.xml,并将以下行添加到 build.xml 中:
<import file="nbproject/profiler-build-impl.xml"/>您可以通过从主菜单中选择 Profiler > Advanced Commands > Unintegrate 选项来恢复原构建脚本。
IDE 提供了很多内部设置,我们可以根据自己的需要来调整性能分析。例如,您可以通过减少生成信息的总量来降低性能分析的开销。但是,您可能需要一些时间才能理解众多可用设置的意义和用法。对于很多应用程序,为性能分析任务指定的默认设置在大多数情况下已经够用了。
对项目进行性能分析时,根据您想要获得的分析信息的类型,使用 Select Profiling Task 对话框选择任务。下表说明了性能分析任务以及从运行该任务获得的分析结果。
性能分析任务 | 结果 |
---|---|
监控应用程序 | 选择此任务以获得有关目标 JVM 属性的高级信息,包括线程活动和内存分配。 |
分析 CPU 性能 | 选择此任务以获得有关应用程序执行的详细信息,包括执行方法的时间和方法被调用的次数。 |
分析内存使用情况 | 选择此任务以获得有关对象分配和垃圾回收的详细信息。 |
Select Profiling Task 对话框是运行性能分析任务的主界面。选择任务后,您可以修改任务设置以进一步调节您将获得的结果。对于每个性能分析任务,您也可以根据该任务创建并保存自 定义性能分析任务。您创建自定义性能分析任务时,该自定义任务会在显示在 Select Profiling Task 对话框的列表中,便于以后轻松查找和运行您的自定义设置。您创建自定义性能分析任务后,您可以通过单击 Select Profiling Task 对话框中的Advanced settings 选项来修改更多高级分析设置。
现在,我们将分析 Anagram Game 的性能并展示每个性能分析任务。
当您选择 Monitor 任务时,不需要任何工具就可以启动目标应用程序。监控应用程序时,您将获取有关目标 JVM 的许多重要属性的高级信息。由于监控应用程序开销很小,因此可以在此模式下长时间运行应用程序。
要监控 Anagram Game 应用程序,请执行以下步骤:
单击 Run 按钮后,IDE 会启动应用程序,并且 Profiler 窗口会在 IDE 的左窗格打开。Profiler 窗口包含一些控制器,我们可以执行以下操作:
您可以使用 Profiler 窗口中的控制器或主菜单来打开可以在其中查看监控数据的窗口。您可以使用 Telemetry Overview 窗口快速实时获得监控数据的概览。
Telemetry Overview 可用于快速查看应用程序的状态。将光标置于某个图表之上,我们可以看到有关图表中显示的数据的更多详细统计数据。您可以单击 Telemetry Overview 窗口中的任何图表,以打开更大、有更多详细信息的图表。
当您选择 CPU 任务时,IDE 会对应用程序的的方法级的 CPU 性能(执行时间)进行分析,并实时处理结果。您可以选择分析整个应用程序的性能,或者只分析部分应用程序代码,甚至只分析某个特定代码片段。
要分析 CPU 性能,您可以通过选择以下选项之一确定如何分析应用程序:
要对应用程序的一部分进行性能分析,首先需要指定一个或多个根方法。根方法是在源代码中指定为 Instrumentation 根的方法、类或包。当应用程序的一个线程进入和离开 Instrumentation 根时,系统针收集分析数据。在应用程序的线程进入根方法之前,不会收集任何分析数据。
注意:对于一些程序,此选项可能是获得任何详细和/或真实性能数据的唯一方法,因为分析整个应用程序可能会生成太多分析数据,以至于应用程序变得无法使用或者可能甚至引起崩溃。
您也可以通过使用过滤器限制监测的源代码,进一步微调分析多少代码。
现在您可以使用 IDE 来分析 Anagram Game 应用程序的 CPU 性能了。您将选择 Part of Application 选项,然后选择 WordLibrary.java 为分析根。通过选择此类为分析根,可以将分析限制在此类中的方法。
单击 Run 按钮后,IDE 会启动应用程序并开始分析会话。要查看分析结果,单击 Profiler 窗口中的 Live Results 按钮来打开 Live Profiling Results 窗口。Live Profiling Results 窗口会显示迄今为止收集到的分析数据。默认情况下显示的数据每隔几秒钟就会刷新一次。当分析 CPU 性能时,Live Profiling Results 窗口会显示有关每个方法花费的时间以及每个方法的调用次数的信息。您可以看到在我们的 Anagram Game 应用程序中最初仅有两个方法被调用。
如果您尝试解开 Anagram Game 中的一些字谜,您可以看到 IDE 会显示我们的操作正在调用的其他方法以及应用程序在每个方法上花费的时间。
通过右键单击方法的名称并选择 Go To Source,您可以快速浏览到包含任何列出的方法的源代码。单击 Go To Source 按钮时,该类会在 Source 编辑器中打开。
分析内存使用情况任务会给您提供有关在目标应用程序中被分配的对象的数据,比如被分配对象的数目、类型和位置。
要分析内存性能,您可以通过选择以下选项之一确定想要获取多少数据:
第一个选项是第二个的功能子集,并且具有更小的性能和内存开销。Select Profiling Tasks 窗口中的 Overhead 测量仪可以根据您选择的分析选项大致给出分析开销的增长或降低。
现在我们可以使用 IDE 来分析 Anagram Game 应用程序的内存性能了。您将选择 Record both object creation and garbage collection 选项。您也将选择 Record stack traces for allocation,这样 IDE 会记录整个调用堆栈。通过选择此选项,当您创建内存快照时,您将可以查看分配了对象的方法调用的相反的调用树。
此选项设置了堆栈取样的时间间隔/ 比例。通过将该值设为 10,则表示对于每个类,每隔 10 个对象才有一个将被完整记录。要记录每个对象的所有信息,您可以将该值设置为 1.但是这将显著增加分析开销。
单击 Run 按钮后,IDE 会启动应用程序并开始分析会话。要查看分析结果,单击 Profiler 窗口中的 Live Results 按钮来打开 Live Profiling Results 窗口。Live Profiling Results 窗口显示有关分配到项目中的对象的大小和数量的信息。
默认情况下,结果会按 Live Bytes 的大小来存储和显示,但是您可以单击列标题来更改结果显示的方式。您也可以通过在列表下面的过滤器框中键入一个类名来过滤结果。
当正在进行分析会话时,您可以通过创建快照来捕获分析结果。快照可以捕获您创建该快照时的分析数据。但是,快照与活动的分析结果在以下方面也有所不同:
由于打开项目的快照并不一定需要分析会话正在运行,因此您可以通过在 Profiler 窗口中选择已保存快照列表中的快照,并单击 Open 随时打开项目的快照。
对于 Anagram Game 应用程序,我们想要创建结果的快照,并查看 String 类型对象的分配堆栈轨迹。然后我们想要再创建一个快照,并对两个快照进行比较。如果打开了内存快照,您可以将其与项目中或在系统的其他地方保存的内存快照进行比较。
注意:您可以将快照保存到文件系统上的任何地方,但是只有保存在项目中默认位置的快照会在 Profiler 窗口中列出。您也可以将快照保存为图像文件 (.png),这些图像文件可以在 IDE 的外面查看。
相关文章:https://netbeans.org/kb/docs/java/profiler-intro_zh_CN.html
推荐软件jprofiler
在 NetBeans IDE 6.0 中分析 Java 应用程序性能,布布扣,bubuko.com
在 NetBeans IDE 6.0 中分析 Java 应用程序性能
标签:http java 使用 strong io 文件 数据 for
原文地址:http://www.cnblogs.com/langtianya/p/3881117.html