OptimizeitProfiler概览_第1页
OptimizeitProfiler概览_第2页
OptimizeitProfiler概览_第3页
OptimizeitProfiler概览_第4页
OptimizeitProfiler概览_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Optimizeit Profiler 概览本文通过介绍 Optimizeit Profiler 的 一些主要特征来使你对它有个简要的了解。如果想要知道更多的信息,请查看 Optimizeit Profiler 用户手册。可以从 Optimizeit Profiler单击 主菜单 info|help 来查看所有的使用文档。使用中有何问题,请随时与 Borland Technical Support 联系。启动应用程序Optimizeit Profiler 是 通过在一个独立的虚拟机上运行应用程序来收集有用的信息。在运行一个 java 程序前,需要安装一个 java 虚拟机。 Optimizei

2、t Profiler 默认配置是 JDK 1.4 or 1.4.1 。如果你想 使用的另外的 虚拟机,可以查看 Optimizeit Profiler用户手册中的如何增加额外的虚拟机部分。Optimizeit Profiler 可 用来测试任何类型的 java 程序:标准的应用程序、应用小程序、 servlets 、 jsp ,ejb 等。本文所使用的都是 演示程序,包含在 Optimizeit quichktour 目录下。文中所有的演示均可以此来完成。1、打开 Optimizeit Profiler;2、如果你是第一次打开,将会自动弹出编辑设置窗口。如果已经打开,可以从 file 菜单下选

3、择 new setting ,调出编辑设置窗口。3、在程序类型框中选择 Application 。4、单击 "Program main class or Jar file"右面的“ Browse, ”按钮。5、找到 docprofilerquicktourQuickTourApp.jar文件,然后单击 open。6、Profiler 会返回到设置窗口,并且自动带入程序的工作区和类路径。在 Source Path 框中,单击 change, 按钮。7、在 Source path chooser 窗口中,选择安装路径下的 docprofilerquicktour 目录;选中 d

4、ocprofilerquicktourQuickTourApp.jar 文件后单击窗口中的向下按钮把它加入到 source path 部分。8、单击 ok 增加到源文件中路径中。设置好后的对话框 如下:2£jEdit settingsStartupI Filters Virtual Machines Program t/peApplication j Applet J Servlet/JSP > Remote Applicationeg怕m mmm clmsm or J町佗:ICAOptimizeitSuitetOptimizeitSiiiteEOldocprofileAqui

5、cktoiJrtQuickTourApp.ji Browse.Program working dirEctory:| C AOptimizertSuitetO ptimizeitSuiteSOldoclprofileAqulcktourBrowse OptionsPause after launch_ VM cannot exit _ Enable auditAPiDisable imemory profiler jOpen a consoleAula-start CPU profilerExtra Java parametersIExtra program parameters:Class

6、path| Source pathC AO ptim ize its uiteOptimize its uite 50tdi仝c:OptimizeitSuitelOptimi7eitSLiite50lcliC:beaplat7001 _36_COMP_win32.jar|CAj2sdk140VlEmmjfclSwinqSmt2曲小CAbealjdkl 31 _03WbUoolsjarCAbeaWeblogic700samplesserve rVsC:beawe bl OQic700samplesserve Ac&C:j2sdkl ,4.OWemoWSwingSet2Change.Cha

7、nge,.ResetS 恰 rt nowJOKCancel9、单击Start now 按钮。10、编辑窗口会自动关闭,并且 Optimized Profiler自动加载事例程序。使用 Memory Profiler当你是第一次使用该工具,Optimized自动打开到内存监视窗口:9r園Virtual machine runnin©File Edrt Program Tools Optimizeit Infoj 和日ang.String265 日|(+2656charfl2649+ 2640java.utii.HasiitableSEntry1 044+ 1044java, uti 1

8、. H as hMap® Entry327HM+ 327Object1 234+ 1234java lang.Class557+ 557sun java2d JocifisGraphicsPrimitiMEProxy311+ 311javautil.jarAttributesINanie149十149javax.swing UIDefaults$ProxyLazyValue81 |+ B1jaa.util.HashMap139+ 139jawa.util. jar. Attributes1116 + 116java9 门 g” 1+ 72sun awtimageBii1Teredlm

9、ageGraphics2D920+ 920java.util.HashMapJ3411+ 41java. util.TreeMapJEntry341+ 34java.util.Hashteble521+ 62java.lang.Float26 |+ 2Ejava.lang reflecl.Field0 1Nonej ava .util. StringTokeri Ize r0 1NoneHeapDiffClass name Instance countFitters:Disable garbage collector开,这样能够看到对象的创建和内存监视器列出了被测程序中所有的类并且实时统计每个

10、类的实例的数目。内存监视器默认是以堆模式打 撤销。下面的步骤将演示将介绍如何控制内存监视器以便于分析被测程序的内存使用情况:1、单击内存监视器表头的in sta nee cou nt 。这样将按照已分配的实例数来进行降序排列。2、 在内存监视器窗口下方的Filters 窗口中,输入你想观察的某个类,在filters框中输入Java.awt.*,并且按回车键;这样将只显示java.awt类的相关信息。3、 我们可以看到,许多类的实例数要么增加,要么减少。增加是因为有实例生成,而减少是因为垃圾回收在起作用。如果要查看临时对象的创建,可以选中窗口右侧底部的Disable garbage collec

11、tor 按钮,这样Optimized 将一直持续显示所有实例的数目。File Edit Program Tools Optimizeit InfoClass wrriE 卜应伽帕 ujunt Diffjava.awt.Rectarigle50127+ 5cnTjava. awt.geomAffin eTransform11316+ 11318j ava awt. eve ritJnvo cation Eve nt2009+ 2608java.awt.Color2726+ 2726java awt eventActionEvent1 404|1 :+ 1404java.awt Eve ntQue

12、ue Item2642髓+ 2642java. awt.Dimens ion13301+ 1330jwa.awt.imase.Bufferedlmage2611+ 261java.awt font T extAttribute19|1+ 19java.awt Point254|1+ 254iava.awt.AlphaCom 卩 口百血31+ 8java. awt.image.DirectColorMo del31+ 3java.awtn百眶61+ 6java.awt.fontT ransfb rm Attribute61+ 6java.awt AWT Eve ntMulti caster31+

13、 3iava.awt Queua31+ 3java.awt Comp onentOrientation31+ 3java.awt Elord erLayout21十2java.awt.image.DataBufTerUShort11+ 1Filters: | java.awt*Z| Disabie g 自 rb 甘前 colledcr4、选中 java.awt.Color 类,然后单击 Allocation Backtrace 按钮进入 allocation backtrace 模式。你也可以在类名上双击进入。 Backtrace 信息显示了类的每个实例中的方法被调用的信息。5、在 Alloc

14、ation Backtrace 视图中,可以以两种方式来查看信息:Hierarchical view 分层模式 默认显示树形图。在树形图中,某个方法可能显示在多个地方,在于谁调 用了这个方法。但是在图 形视图中,节点表示的方法仅显示一次。它仍然可以有多个父路径。In the Aggregated view 图表模式 每个节点将使用线连接起 来,或者是到了边界只有一边有线。从有多个子节点开始,每条连线 对应一个调用这个方法的方法。与树形不同的是,图表中可能存在循环。图表显示有助于进行跟 踪。如果你想找出一条语句是如何 被调用的,那么图表将是一种快速而简易的方法,通过图表你可以迅速地找出有父子关系

15、的对象。可以使用按钮 在两种方式之间切换。6、选中 EventDispatchThread.run() 行,单击左边的加号展开。单击比率最大的节点,直到展开 Graphics2d.fill3DRect() 行为止。File Edrt Program Tools Optimizeit InfoBacktraces of methods allocatin期 iava.awtColorSIVirtual machine runningMPm 09.92% IrwocationEventdi&patehO- 99.02% SystemEventQLieueUtilitiesSComponen

16、tWorkRequest.runO f 99,92% RepalrvtManager.palntDIirtyReglonsOh 99.92% JComponentpaintlrnrriediatelyOti 99.92% JCompanent _paintlmmediatelyOT 99 92% JCorripanent.paintWithBuffer0- 99.92% JCoiYiponent.paintQ三 99.92% JComponentpaintChildrenQ匕 93.S2% JComponent.paintO匕 99.92% QTShape paintComponentO-卜

17、49 96% Color brighterO 49.96% Color.darkerQAllocation locationsCountCount %Color.brighte vQColordarkerOColor class initializationSunGra|jhics2D elassjnrtializationWPanelPeer inrtializeO1023S10239131149.96%49.96%0 06%0 0% 0%Ei20478 instances (99.92%) allocated in method java.awt.3raphics2D.fill3DRect

18、O (starting in 6 rap hies 2D .java: 46 2)7、双击Graphics2d.fill3DRect()行,将显示颜色实例分配的源代码。源代码将有助于你理解为什么绘制路径类产生了如此多的实例fill3DRect方法分配了许多的颜色,是因为它调用了Color.brighter() 方法and Color.darker() 方法。注意:如果你是第一次使用者,你可能没有图中的源代码路径。使用内存监视器,可以帮助你创建更少的临时对象。虽然临时对象经常很快便被析构,然而它会导致垃圾收 集更加频繁。对于大多数 java 虚拟机来说,当垃圾收集器比较忙时,运行任何的 java

19、 程序都会延迟几百毫秒。如果使用了过多的临时对象,由于这个原因会致使用户感 觉到程序反应缓慢。内存监视器同时有助于理解为什么垃圾收集器没有析构这些对象。例如,它将帮助我们我们了解当一个对象 不再被使用时确实被垃圾收集 器析构掉。下面的步骤描述了使用内存监视器来判断一个实例的产生和如何被垃圾收集器收集。1、单击 图标返回到堆模式。2、为了 只显示与 Image-related 相关的类,可以清除 fileters 框中的内容,然后输入 *image* , 然后按回车键。3、选中 javax.swing.ImageIcon 行,然后单击图标 (显示实例和参考图),显示出了实例图:窗口的上方显示了实

20、例的字符描述。窗口中间部分显示了所选实例对象参考和由对象所派生的实例。在这种情况下,因为Imagelcon对象 被引用了,所以垃圾收集器没有收集。窗口最下方部分显示了中间窗口所选实例的分配路径。可以看出实例是构造器QuickTourApp分配的。这个图像就是作为背景显示在程序中间的 Optimized 的 logo。内存泄漏经常是由于在程序运行中连续地引用对象,因此他们仍然占用资 源。正因为如此,如果你能够定位到使用大量引用的对象,那1、 打开内存泄漏检测,单击内存泄漏监2、 为了查找可能的内存泄漏, Profiler3、 让 quicktour 程序运 行 15 秒以上。4、 再次单击保存堆

21、状态按钮记录一个新么你就能够定位至对象占用资源导致内存泄漏的根源。为了能够定位到使用大量引用的对象,并且跟踪 这些引用: 测按钮 。需要比 较一系列堆的状态。可以单击保存堆状态按钮的堆状态记录。你可以创建多个堆状态记录。来创建5、From heap state 表中为要作为比较的初始状态, To heap state 表中为要与 From heap state 作比较的状态。每当选中 From heap state表中的记录后, To heap state 表中只能选择该记录之后的记录。6、窗口的中间部分显示了被比较堆状态 记录之后新引用的资源。 Count 值是这个对象递增引用的数量。 可以

22、单击 count 表头进行排序。 你可以选择一个引用 来查看堆状态中所有与这个对象引用有关的对象引用File Edit Program Tools Optimizeit InfoIHIM ME si El ElZoomr +;/jk.j /jirij.pU.FsrU I上irIJ/订二cJi匚川r 3:中:$汕ay(+12) sun .a wt .i magi1S (+16) sunawtmagi+11'5 (+77) Native stack|Memory Leak DetectorVirtual machine runningFrom heap stateHeap usedHeap

23、 sizeTo heap statsHeap usedHeap sizeHeap state #1 - 5668 objects 13316.1637Kb4155KbI Heap State #1 - 5569 objects 13.1637Kb4155KbHeap state ff2- 566B objects 13316 .4163KbHeap state #2 - 5S68 objects 13.1626Kb41S3KbHeap state #3 - 5685 objects 13395.1638Kb4183KDI Heap state #3 - 5685 objects 13.1638

24、Kb4103KbIncreased object retention souirceCountNative stack of thread Th read-1+ 115sun. java2d.pipe.ShapeToPolyConvertersun.java2d.ipipe.ShapeToPolyConverterff1 6f826+ 17sun.awLimage.BufreredlmageGraphics2D BufferedlmageGraphics2DBufferedlmageBufferecllmageff126f3e:type= S DirectCo.+ 16sun.awt.imag

25、e.BufferedlmaQeGraphics2D 0ufferedlmageGraphics2DBiifferedlmaQe0ufferecllmagefn 26f3e: type = 8 DirectCo.+ 12zm. ; m m r nee出-r*niDetail Level7、图中的对象将有连接线或者边界。从 根节点开始,都有一个相应的引用。把鼠标移到节点上面,将会显示新引用的数目和该节点调用 toStri ng()的。把鼠标移到末级节点上,将会显示这个引用的实例变量名。8在图的上方有两个滚动条:使用详细程度滚动条来调节图表显示的详细程度。使用缩放滚动条来调节图表显示的大小。所有不同

26、的颜色代表不同的意思:蓝色节点为间接引用句柄。表示不是直接引用,而是引用的引用。红色节点为引用句柄。表示是直接引用。节点的引用越多,颜色越深。后续连接显示为绿色线条。后续连接在引用中对于一个对象是更高层次的引用。所有的后续连接的边框为蓝 色。在引用层次中前 续连接是后续连接的一个引用。当选择一个节点以后,与这个节点相关的引用将会闪烁显示。 选中一个节点然后单击鼠标右键,将会在一个新的实例中打开所选择的节点。使用 CPU Profiler内存监视器有助于对对象的最小化使用。CPU监视器将有助于你了解对象所使用的时 间。CPC监视器在java虚拟机中可被看作是一个记录设备。下面的步骤描述了如何给出

27、被测试程序的响应时间和CPU使用率。1、单击CPC监视按钮切换到CPI监视界面。2、单击开始CPU监视按钮开始记录程序的CPU使用率。3、让程序运行一段时间(比如三秒以 上)。4、 单击停止CPU监视按钮停止记 录。CPU监视器显示出了已经记录的 CPU 使用信息。File Edit Program Tools Optimizeit InfoTime (ironier oirtiiirt - Sampler / MethodsVirtual machine running5、如果没有选上,请选择树形格式,看到的信息是一样的6、单击窗口上方的下拉框可以显示出虚 拟机当前运行所有的线程File E

28、dit Program Tools Optimizeit InfoHotspotsTime % Timejava 1 an Q.Obj ectwait44 6412151 msAsun.awt.windows.WGraphics. dispose6.051642 ms""""sun.javaSd.SunGra卩hi朋D 加帕3.891055 mssun.awt.windows.WGraphics.lock2.436S1 msjavax swing.RepaintMana ger paintDirtRegions2.39648 msjava.utii.Ha

29、slitable.getEnumeralion2.31627 msjavaang,tBf-Fiin 別 izer agister1.54419 rnsjava,utiiVector.«init>1.43388 msjava.awt.Rectangle.setBounds1.33362 msjeva.utii. Hashtat)le$Enumerator,<init>1.24338 ms5、如果没有选上,请选择树形格式,看到的信息是一样的6、单击窗口上方的下拉框可以显示出虚 拟机当前运行所有的线程7、 选择AWT-EventQueue-0 thread线程,该线程被

30、AWT使用来处理时间,例如repaint事件。8、展开 Eve ntDispatchThread.pump On eEve nt()行。9、 单击EventQueue.dispatchEvent()左方的加号展开所有的方法,直到展开到JComponent.paintWithBuffer()方法。行前面的图标所表示的意思为:表示该方法直接被另外一个方法调用表示 执行时间最长的方法。在这个例子中 AWT-EventQueue-C线程一直用处理repaint事件。10、选择 JComponent.paintWithBuffer()行。如果鼠标移到 JComponent.paintWithBuffer

31、()所调用的方法上,将显示在JCompo nen t.pai ntWithBuffer()中该方法所使用的时间比例。11、如果要分析那个线程是空闲的,CPU监视器可以同时显示 CPL使用率和使用时间。单击inspector (tool菜单下)打开inspector 对话框。Profiler inpeciJnl xlProfilertype: SamplerDisplay precision method _/jOnly record CPU usageSampling period: pSdrn()ler options12、不选中Ony record CPU usage,然后关闭窗口。使用这

32、个特征来选择缓冲策略,默认显示的是CPL纯使用信息。查看虚拟机信息Optimizert提供了实时显示与数据有 关的高标准性能测试的信息。使用这个特点,你可以了解到性能问题是和CPUt关还是和内存有关,或者与两者都有关。,切换到虚拟机模式。单击在这种模式下,显示四类性能图标,每类图表描述了虚拟机不同的活动信息:File Edit Program Tools Optimizeit Info大小。察垃圾收集器使用的频率和时线程图:左下角的图中红色线表示当前运行的线程,绿色表示大多数的线程使用CPU类图:右下角的图显示了虚拟机当前加载的类的数目。File Edit Program Tools Opti

33、mizeit InfoVirlual Machine InformationVirtual machine running大小。察垃圾收集器使用的频率和时线程图:左下角的图中红色线表示当前运行的线程,绿色表示大多数的线程使用CPU类图:右下角的图显示了虚拟机当前加载的类的数目。File Edit Program Tools Optimizeit InfoJava Heap - Size:4183K - U$ed:2258KGC Activity -1 % - Last GO Time 11 ms大小。察垃圾收集器使用的频率和时线程图:左下角的图中红色线表示当前运行的线程,绿色表示大多数的线程使

34、用CPU类图:右下角的图显示了虚拟机当前加载的类的数目。File Edit Program Tools Optimizeit Info大小。察垃圾收集器使用的频率和时线程图:左下角的图中红色线表示当前运行的线程,绿色表示大多数的线程使用CPU类图:右下角的图显示了虚拟机当前加载的类的数目。File Edit Program Tools Optimizeit Info37:00,037:10 037:20 037:30.0 |300.037:10,037:2ai.O37:30.0大小。察垃圾收集器使用的频率和时线程图:左下角的图中红色线表示当前运行的线程,绿色表示大多数的线程使用CPU类图:右下

35、角的图显示了虚拟机当前加载的类的数目。File Edit Program Tools Optimizeit Info大小。察垃圾收集器使用的频率和时线程图:左下角的图中红色线表示当前运行的线程,绿色表示大多数的线程使用CPU类图:右下角的图显示了虚拟机当前加载的类的数目。File Edit Program Tools Optimizeit InfoThreads:8-Active :0Loaded classes:S47|八3爲 /厂:3以厂 37:30.0113337:00 037:1 0.037:20 037:30 0-U出織BAI AlBIM堆图表:左上角的图表中红色线表示被测程序当前需

36、要的堆栈的大小,绿色表示被测程序实际使用的堆栈的 垃圾收集图表:有上角的图中显示当前垃圾收集器的活动,显示了垃圾收集时间占总时间的比例。有助于观 间。大小。察垃圾收集器使用的频率和时线程图:左下角的图中红色线表示当前运行的线程,绿色表示大多数的线程使用CPU类图:右下角的图显示了虚拟机当前加载的类的数目。查看测试结果Opti ni zeit 包含了许多方法来查看测 试结果,就象上面的实时监控方法成功一样,也可以把所有的信息保存在一个快照中或报告中,这样 你就可以在以后分析结果或者和另外一个结果进行比较。例如,你可以把测试结果输出为一个 html文件。1、当演示程序还在运行时,单击 CPI监视器

37、返回到CPI监视界面。2、为了查看所有的信息,完全展开所有 的方法。确认你需要的信息都显示在层次视图中,因为输出中不会包含图表。3、单击输出图标4、 填写标题,检查file name框中的 路径是有效的,并且选择输出为.html格式5、 单击ok,Optimizeit会把结果输出到定义的.html文件中,然后会自动打开。Document: DoneWhat's RelatedFile Edit View Go Communicator Help剛 WebMail 刷 Radio 剧 People 印 Yellow Page$ 刷 Download 剧 CalendarChannel 剧 Java Bu$ine$sU 里RealPk Descrip

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论