转自:
http://wangfc123.blog.163.com/blog/static/157468012010530102019387/
本文通过介绍Optimizeit Profiler的 一些主要特征来使你对它有个简要的了解。如果想要知道更多的信息,请查看Optimizeit Profiler用户手册。可以从Optimizeit Profiler单击 主菜单info|help来查看所有的使用文档。
使用中有何问题,请随时与Borland Technical Support联系。
启动应用程序
Optimizeit Profiler是 通过在一个独立的虚拟机上运行应用程序来收集有用的信息。
在运行一个java程序前,需要安装一个java虚拟机。Optimizeit Profiler默认配置是JDK 1.4 or 1.4.1。如果你想 使用的另外的虚拟机,可以查看Optimizeit Profiler用户手册中的如何增加额外的虚拟机部分。
Optimizeit Profiler可 用来测试任何类型的java程序:标准的应用程序、应用小程序、servlets、jsp,ejb等。本文所使用的都是演示程序,包含在Optimizeit quichktour目录下。文中所有的演示均可以此来完成。
1、 打开Optimizeit Profiler;
2、 如果你是第一次打开,将会自动弹出编辑设置窗口。如果已 经打开,可以从file菜单下选择new setting,调出编辑设置窗口。
3、 在程序类型框中选择Application。
4、 单击"Program main class or Jar file"右面的“Browse…”按钮。
5、 找到\doc\profiler\quicktour\QuickTourApp.jar文件,然后单击open。
6、 Profiler会返回到设置窗口,并且自动带入程序的工作区和类路径。在Source Path框中,单击change…按钮。
7、 在Source path chooser窗口中,选择安装路径下的\doc\profiler\quicktour目录;选中\doc\profiler\quicktour\QuickTourApp.jar文件后单击窗口中的向下按钮把它加入到source path部分。
8、 单击ok增加到源文件中路径中。设置好后的对话框 如下:
9、 单击Start now按钮。
10、 编辑窗口会自动关闭,并且Optimizeit Profiler自动加载事例程序。
当你是第一次使用该工具,Optimizeit自动打开到内存监视窗口:
内存监视器列出了被测程序中所有的类并且实时统计每个类的实例的数目。内存监视器默认是以堆模式打 开,这样能够看到对象的创建和撤销。下面的步骤将演示将介绍如何控制内存监视器以便于分析被测程序的内存使用情况:
1、 单击内存监视器表头的instance count。这样将按照已分配的实例数来进行降序排列。
2、 在内存监视器窗口下方的Filters窗口中, 输入你想观察的某个类,在filters框中输入Java.awt.*,并且按回车键;这样将只显示java.awt类的相关信息。
3、 我们可以看到,许多类的实例数要么 增加,要么减少。增加是因为有实例生成,而减少是因为垃圾回收在起作用。如果要查看临时对象的创建,可以选中窗口右侧底部的Disable garbage collector按钮,这样Optimizeit将一直持续显示所有实例的数目。
4、 选中java.awt.Color类,然后单击Allocation Backtrace 按钮进入allocation backtrace 模式。你也可以在类名上双击进入。Backtrace信息显示了类的每个实例中的方法被调用的信息。
5、 在Allocation Backtrace视图中,可以以两种方式来查看信息:
l Hierarchical view分层模式 默认显示树形图。在树形图中,某个方法可能显示在多个地方,在于谁调 用了这个方法。但是在图形视图中,节点表示的方法仅显示一次。它仍然可以有多个父路径。
l In the Aggregated view图表模式 每个节点将使用线连接起 来,或者是到了边界只有一边有线。从有多个子节点开始,每条连线对应一个调用这个方法的方法。与树形不同的是,图表中可能存在循环。图表显示有助于进行跟 踪。如果你想找出一条语句是如何被调用的,那么图表将是一种快速而简易的方法,通过图表你可以迅速地找出有父子关系的对象。
可以使用按钮 在两种方式之间切换。
6、 选中EventDispatchThread.run() 行,单击左边的加号展开。单击比率最大的节点,直到展开Graphics2d.fill3DRect()
行为止。
7、 双击Graphics2d.fill3DRect() 行,将显示颜色实例分配的源代码。源代码将有助于你理解为什么绘制路径类产生了如此多的实例。fill3DRect方法分配了许多的颜色,是因为它调用了 Color.brighter()
方法and Color.darker()
方法。
注意:如果你是第一次使用者,你可能没有图中的源代码路径。
使用内存监视器,可以帮助你创建更少的临时对象。虽然临时对象经常很快便被析构,然而它会导致垃圾收 集更加频繁。对于大多数java虚拟机来说,当垃圾收集器比较忙时,运行任何的java程序都会延迟几百毫秒。如果使用了过多的临时对象,由于这个原因会致使用户感觉到程序反应缓慢。
内存监视器同时有助于理解为什么垃圾收集器没有析构这些对象。例如,它将帮助我们我们了解当一个对象 不再被使用时确实被垃圾收集器析构掉。下面的步骤描述了使用内存监视器来判断一个实例的产生和如何被垃圾收集器收集。
1、 单击 图标返回到堆模式。
2、 为了 只显示与Image-related相关的类,可以清除fileters框中的内容,然后输入*image*, 然后按回车键。
3、 选中javax.swing.ImageIcon 行,然后单击图标
(显示实例和参考图),显示出了实例图:
窗口的上方显示了实例的字符描述。
窗口中间部分显示了所选实例对象参考和由对象所派生的实例。在这种情况下,因为ImageIcon对象 被引用了,所以垃圾收集器没有收集。
窗口最下方部分显示了中间窗口所选实例的分配路径。可以看出实例是构造器QuickTourApp分配的。这个图像就是作为背景显示在程序中间的Optimizeit的logo。
内存泄漏经常是由于在程序运行中连续地引用对象,因此他们仍然占用资 源。正因为如此,如果你能够定位到使用大量引用的对象,那么你就能够定位至对象占用资源导致内存泄漏的根源。为了能够定位到使用大量引用的对象,并且跟踪 这些引用:
1、 打开内存泄漏检测,单击内存泄漏监 测按钮 。
2、 为了查找可能的内存泄漏,Profiler需要比 较一系列堆的状态。可以单击保存堆状态按钮 来创建。
3、 让quicktour程序运 行15秒以上。
4、 再次单击保存堆状态按钮记录一个新 的堆状态记录。你可以创建多个堆状态记录。
5、 From heap state表中为要作为比较的初始状态,To heap state表中为要与From heap state作比较的状态。每当选中From heap state表中的记录后,To heap state表中只能选择该记录之后的记录。
6、 窗口的中间部分显示了被比较堆状态 记录之后新引用的资源。Count值是这个对象递增引用的数量。可以单击count表头进行排序。你可以选择一个引用 来查看堆状态中所有与这个对象引用有关的对象引用。
7、 图中的对象将有连接线或者边界。从 根节点开始,都有一个相应的引用。把鼠标移到节点上面,将会显示新引用的数目和该节点调用toString()的。把鼠标移到末级节点上,将会显示这个引用的实例变量名。
8、 在图 的上方有两个滚动条:
使用详细程度滚动条来调节图表显示的详细程度。
使用缩放滚动条来调节图表显示的大小。
所有不同的颜色代表不同的意思:
l 蓝色节点为间接引用句柄。表示不是直接引用,而是引用的引用。
l 红色节点为引用句柄。表示是直接引用。
l 节点的引用越多,颜色越深。
l 后续连接显示为绿色线条。后续连接在引用中对于一个对象是更高层次的引用。所有的后续连接的边框为蓝 色。在引用层次中前续连接是后续连接的一个引用。
l 当选择一个节点以后,与这个节点相关的引用将会闪烁显示。
l 选中一个节点然后单击鼠标右键,将会在一个新的实例中打开所选择的节点。
使用CPU Profiler
内存监视器有助于对对象的最小化使用。CPU监视器将有助于你了解对象所使用的时 间。CPU监视器在java虚拟机中可被看作是一个记录设备。下面的步骤描述了如何给出被测试程序的响应时间和CPU使用率。
1、 单击CPU监视按钮切换到CPU监视界面。
2、 单击开始CPU 监视按钮开始记录程序的CPU使用率。
3、 让程序运行一段时间(比如三秒以 上)。
4、 单击停止CPU监视按钮停止记 录。CPU监视器显示出了已经记录的CPU 使用信息。
5、 如果没有选上,请选择树形格式,看 到的信息是一样的。
6、 单击窗口上方的下拉框可以显示出虚 拟机当前运行所有的线程。
7、 选择AWT-EventQueue-0
thread线程,该线程被AWT使用来处 理时间,例如repaint事件。
8、 展开EventDispatchThread.pumpOneEvent()
行。
9、
单击EventQueue.dispatchEvent() 左方的加号展开所有的方法,直到展开到JComponent.paintWithBuffer()方法。行前面的图标所表示的意思为:
表示 该方法直接被另外一个方法调用。
表示 执行时间最长的方法。
在这个例子中AWT-EventQueue-0线程一直用处理repaint事件。
10、
选择JComponent.paintWithBuffer() 行。如果鼠标移到JComponent.paintWithBuffer()所调用的方法上,将显示在 JComponent.paintWithBuffer()中该方法所使用的时间比例。
11、
如果要分析那个线程是空闲的,CPU 监视器可以同时显示CPU使用率和使用时间。单击inspector(tool菜单下)打开inspector对话框。
12、
不选中Ony record CPU usage,然后关闭窗口。使用这个特征来选择缓冲策略,默认显示的是CPU纯使用信息。
查看虚拟机信息
Optimizert提供了实时显示与数据有 关的高标准性能测试的信息。使用这个特点,你可以了解到性能问题是和CPU有关还是和内存有关,或者与两者都有关。
单击 ,切换到虚拟机模式。
在这种模式下,显示四类性能图标,每类图表描述了虚拟机不同的活动信息:
堆图表:左上角的图表中红色线表示被测程序当前需要的堆栈的大小,绿色表示被测程序实际使用的堆栈的 大小。
垃圾收集图表:有上角的图中显示当前垃圾收集器的活动,显示了垃圾收集时间占总时间的比例。有助于观 察垃圾收集器使用的频率和时间。
线程图:左下角的图中红色线表示当前运行的线程,绿色表示大多数的线程使用CPU。
类图:右下角的图显示了虚拟机当前加载的类的数目。
查看测试结果
Optinizeit包含了许多方法来查看测 试结果,就象上面的实时监控方法成功一样,也可以把所有的信息保存在一个快照中或报告中,这样你就可以在以后分析结果或者和另外一个结果进行比较。
例如,你可以把测试结果输出为一个html文件。
1、 当演示程序还在运行时,单击CPU监视器返回到CPU监视界面。
2、 为了查看所有的信息,完全展开所有 的方法。确认你需要的信息都显示在层次视图中,因为输出中不会包含图表。
3、 单击输出图标 打开输出窗口:
4、 填写标题,检查filename框中的 路径是有效的,并且选择输出为.html格式。
5、 单击ok,Optimizeit会 把结果输出到定义的.html文件中,然后会自动打开。
现在你就可以共享你的测试结果了。
相关推荐
Optimizeit Profiler 6.0是一款专门针对Java应用程序的性能分析工具,它为开发者提供了强大的内存泄漏检测和性能瓶颈定位功能。这款软件的完整版包含了所有必要的组件,以确保用户能够全面深入地了解并优化他们的...
Optimizeit Profiler是一款强大的性能分析工具,主要用于Java应用程序的性能优化工作。通过在独立的虚拟机环境中运行目标应用程序,它可以收集并提供详尽的性能数据,帮助开发者深入理解应用程序的行为特征。 - **...
Optimizeit.Profiler是IBM开发的一款针对Java应用的高性能分析器,它提供了详细的内存分析功能,包括实时监控内存分配、内存占用情况、对象生命周期等,帮助开发者定位内存泄露的源头。其主要特性包括: 1. **实时...
综上所述,《Optimizeit Profiler 6.0 用户手册》是一份详尽的技术文档,旨在帮助 Java 开发者有效地使用 Optimizeit Profiler 工具来诊断和修复应用程序中的性能问题,特别是内存泄漏问题。通过本手册的学习,用户...
Optimizeit Profiler 6是一款强大的性能分析工具,它帮助开发者深入理解代码执行过程,找出性能瓶颈,从而提升Java应用的运行效率。在本手册中,我们将深入探讨该工具的各个方面,包括其功能、使用方法以及如何通过...
Optimizeit+Profiler是一款由IBM公司开发的性能分析工具,主要用于Java应用程序的性能优化。在Java应用开发和维护过程中,性能问题常常是开发者关注的重点,而Optimizeit+Profiler就是这样的一个利器,它能够帮助...
Optimizeit Profiler6.0完整版+中文使用教程.Optimizeit Suite 主要包括三个工具:Profiler:内存、Java 虚拟机、CPU 使用情况跟踪;Thread Debugger:Thread 跟踪工具;Code Coverage:代码运行覆盖跟踪工具,可以...
OptimizeitProfiler6是一款功能强大的性能分析器,它提供了对Java虚拟机(JVM)的深度剖析,能够帮助开发者识别并解决内存泄漏、CPU瓶颈以及线程问题。在6.0版本中,它不仅保持了易用性和高效性,还可能引入了更多...
性能测试工具OptimizeIt是一款专为Java应用设计的性能优化工具,它能够深入分析应用程序的内存使用、CPU消耗以及线程行为,帮助开发者识别并解决性能瓶颈。本文将基于提供的内容,详细介绍OptimizeIt的使用方法,...
文档"Optimizeit.Profiler.6.0.for.Java.pdf"详细介绍了该工具的使用指南,包括安装、配置和运行过程。"下载说明.HTM"可能包含了下载和安装Optimizeit的步骤及注意事项,而"readme.txt"通常会提供一些额外的信息,...
共2个分卷文件,Borland公司开发的检查java内存泄漏的工具,绿色,无注册码。版本6.0
共2个分卷文件,Borland公司开发的检查java内存泄漏的工具,绿色,无注册码。版本6.0
它的分析器由三个自由耦合的组件组成: Optimizeit Profiler、 Optimizeit Thread Debugger和Optimizeit Code Coverage。 Borland Optimizeit Suite的核心特征 Borland的Optimizeit分析器是用于CPU和堆栈/...
在“Settings”中选择适当的监控选项,例如启用内存分析功能。 - **步骤三**:启动监控。运行应用程序,并使用OptimizeIt进行实时监控。 ##### 3.3 如何利用OptimizeIt检查内存泄漏 一旦配置好OptimizeIt,可以...
4. **使用内存分析工具**:当通过前面步骤难以定位问题时,可以利用专业的内存分析工具(如Optimizeit Profiler、JProbe Profiler等)来监控程序运行时的内存使用情况,帮助识别内存泄漏。 ### 内存分析工具的作用 ...
2. Purify是另一种性能分析工具,虽然文档中没有详细说明,但它也是业界公认的用于检测内存泄漏的专业工具之一。 3. JDK自带的工具,如jmap和jvisualvm,也可以用来检测Java应用程序的内存使用情况。jmap可以生成堆...
Optimizeit Profiler 5.5 Optimizeit Progress Tracker 2.5 Optimizeit Thread Debugger 1.4 Optimizeit Code Coverage 1.5 Optimizeit Profiler 6.0 C#Builder for .NET Architect C#Builder for .NET Enterprise ...
OptimizeitProfiler,本文通过介绍 O p t i m i z e i t P r o f i l e r 的 一些主要特征来使你对它有个简要的了解。如果想要知道更多的信息,请查看 O p t i m i z e i t P r o f i l e r 用户手册。可以从 O p t ...