使用VisualVM分析MyEclipse
MyEclipse包含了Sun公司的VisualVM分析器的高级集成。剖析可以为您收集有关应用程序的数据,因为它们运行并监测数据的统计。
- 剖析一个独立的Java应用程序
- 剖析一个Web应用程序
- 剖析一个Java小程序
持续时间:20分钟
没有MyEclipse?立即下载
1. 确保分析器安装
VisualVM被包含在MyEclipse当中,但其却未必是您基础安装配置的一部分。如果没有安装,您可以很容易地添加组件。
(1)选择Help>Choose Components。
(2)在Selected中,在过滤字段中输入VM找到MyEclipse VisualVM的分析器组件。
(3)如果未安装VisualVM,从左侧选择它并将其移动到右侧添加的组件中。为了可靠地分析,您的应用程序必须在JRE 1.6.0更新的7或者更高的版本中执行。
2. 剖析一个独立的Java应用程序
(1)选择MyEclipse>Examples On-Demand来下载示例项目的分析。
(2)点击搜索,然后搜索swing。
(3)点击Swing Contact Manager安装按钮示例来将其安装到您的工作区中。
2.1 性能分析
(1)右键单击M4M Contact Manager示例项目,并选择Profile As>Java Application。这将启动性能分析模式的剖析。
(2)选择Main – com.myeclipseide.examples.m4m作为主类,然后单击确定,并选择性能分析模式,然后点击确定继续。
(3)在contact manager应用程序中选择一些新的名称来观察分析,此信息会被收集到VisualVM窗口。
(4)在列表中选择一个名称,然后单击删除会看到removeButtonActionPerformed方法被添加到列表中,以1为它的调用计数,每次单击删除后此计数都将增加。
(5)点击保存此时收集到的结果快照。使用过滤器来只显示您要查看的信息,您可以将其保存为以后要研究的文件。
(6)关闭应用程序和VisualVM的窗口。
要在此运行分析会话,可以重复步骤1或者点击分析图标的下拉箭头。选择您要查看的剖析配置,如果先前所分析的应用程序仍在运行,在您启动另一个分析会话之前系统会提示将其关闭。
2.2 自定义性能分析
(1)右键单击该项目,并选择Profile As>Profile Configurations,或者点击文件图标的下拉菜单,并选择Profile Configurations。
(2)在Java应用程序节点下,从走遍的列表中选择应用程序。
(3)选择配置文件选项,然后在性能选项中更改分析器设置。
配置文件
- 此字段指定根方法分析器使用您应用程序的仪表,只有根方法和在应用程序其余部分继续运行的方法被称为仪表。
- 使用添加按钮来指定一个方法、类或包。如果指定一个类,那么类的所有方法都会成为仪表的根。如果指定了一个包,那么包中所包含的所有类方法会成为仪表的根(根据您在根分析向导中的选择,这就意味着只有被选中的包或子包)。
- 默认情况下,MyEclipse规定根包括项目中的所有包。
只/不要配置文件下面的类
- 该分组过滤器控制这些包被(或者不)分析。除了根方法本身以外,如果方法满足此处的定义,那么分析数据值被收集和显示。
- 默认情况下,MyEclipse为一个只包含在项目中的包指定一个过滤器,您可以在Lazy、Eager和Total仪表之间进行选择。
仪表方案
- Lazy(MyEclipse默认值):由于它的低开销,所以它是长时间运行仪表的最佳方案。当使用这个方案时,首先检测的就是根的方法。当第一次执行根方法时,所有的方法调用都会被检测。
- Total:在这个方案中,当加载类时这个类中的所有方法都要检测。对于长期运行的应用程序来说,由于它的高分析开销,因此它并不是一个好的方案。然而对于那些短暂工作的应用程序来说,在分析启动应用程序时它是有用的。
- Eager:在这个方案中,每当一个类被加载时,分析器都将通过根方法直接或间接的定位仪表。因此仪表的方法数量比Lazy方案高得多,但是比Total更低。
分析启动时的基本框架
- 如果应用程序的JVM启动也选择profiled.During性能分析的方法,在性能分析的跟踪方法中,进入和退出呼叫的方法会插入到各仪表的方法中。根据所使用的跟踪技术,这些呼叫可能会需要时间戳。
方法跟踪
- 精确:有了精确的跟踪,在每个方法被调用的时间中进入和退出呼叫采用时间戳。这将会给你准确的执行方法的时间读数(进入和退出相应通话的时间),但由于大量调用OS高精度计时器会增加分析的开销。
- 采样:时间戳采用的只是方法进入和退出呼叫时指定的采样发生在interva的末端。其方法调用仍计算准确,这个选项就大大降低了分析的开销,但其结果的准确性可能比那些使用精度技术的更低一些。
仪表方法调用()
- 如果启用,所有的呼叫都使用反射(java.lang.reflect.Method.invoke())的跟踪和仪表。
仪表getter / setter方法
- 启用getter和setter方法的仪表。
仪表的空方法
- 启用不包含可执行代码的方法仪表。
分析新的threads / runnables
- 如果启用,每次可运行的run()方法来视为根方法,也将导致调用一切方法来进行检测。
排除时间花费在Thread.sleep()和Object.wait()上
- 如果选择了,这些方法都不会被分析。
分析线程数限制
- 分析数据只从注册线程时收集。当未注册的线程进入仪表代码时,它就被注册了。当注册的线程的数目达到指定的限制,进一步停止登记。该计数器可以在分析器复位时重置收集的结果。
2.3 内存性能分析
(1)右键单击该项目,选择Profile As>Profile Configurations,并从列表左侧的Java应用程序节点下选择您的项目。
(2)选择配置文件选项,然后选择内存选项。
(3)自定义设置,然后单击配置文件来启动内存分析。
仅记录对象创建
- 选中后,分析器收集有关的数量、类型和分配对象的位置信息。目前由目标JVM(和它加载的每个新类)来加载所有类仪表。
记录对象创建和垃圾收集
- 如果选择此选项,除了上述选项提供的数据,你也给有关对象生动活泼的信息,即有多少给定类型的对象仍然存在。分析垃圾收集除了创建对象还增加了分析开销。
跟踪每一个X分配
- 尽管特定类别的分配对象的数量会被准确地跟踪,但完整的分析数据是单独进行跟踪的,并且并且只收集每一个X(即类)个对象的分配。记录有关每一个分配信息,该图可以被设置为1,尽管这会显著的增加分析开销。默认情况下,MyEclipse跟踪每10个对象分配。
分配记录的堆栈跟踪
- 如果启用,当对象创建被记录时,此时的调用堆栈也会被记录。默认情况下,整个调用堆栈都会被记录,但限制堆栈深度与X帧选项可以用于限制帧的数目,并减少分析开销。
3. 分析一个Web应用程序
(1)右键单击Web项目,并选择Profile As>MyEclipse Server Application。
(2)自定义设置按照第2节中的说明。分析配置您的Web应用程序是在MyEclipse服务器应用节点配置文件中的配置窗口下。
4. 分析一个Java小程序
(1)右键单击小程序的项目,并选择Profile As>Java Applet。
(2)自定义设置按照第2节中的说明。分析配置您的Java小程序是在Java Applet配置文件中的配置窗口下。
5. 其他的VisualVM功能
在VisualVM的监视器选项中包含应用程序的当前状态、CPU和内存的使用情况概述。
线程选项包含了您的应用程序的线程列表。
以及您可以深入到获得特定线程的详细信息。
点击应用程序按钮,右键单击您的应用程序并选择Thread或堆转储。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。