JProfiler简介
JProfiler是一个全功能的Java剖析工具,专用于检查和跟踪J2SE和J2EE应用程序, JProfiler可以通过实时的监控系统的内存使用情况,随时监视垃圾回收,CPU使用时间,线程运行状况等手段,从而很好的监视JVM运行情况及其性能。同时JProfiler可以和支持和常用的IDE和中间件整合使用。
注:本文档以JProfiler 5.1.4为例。
JProfiler配置
JProfiler可以支持和常用的IDE和中间件整合使用,方便在开发和测试中检测系统性能。不过JProfiler和IDE,中间件无法整合,给开发时检测代码性能造成一定不便。
JProfiler和DNA Developer整合 配置
1. 打开JProfiler 并选择 New Session 页签。
2. 选择 New Remote Integration
3. 选择 On this computer ,next
4. 按如下设置,next
5. 默认端口,next
6. 选择 Wait a connection from the JProfiler GUI, next。
7. 出现以下配置提示信息,可见要完成配置还需两步:一,配置启动参数;二,配置环境
变量
8. 复制启动参数,粘贴到DNA Developer 的VM arguments中
9. 复制JProfiler的启动路径,添加到环境变量PATH中
10.
回到JProfiler,next
11.
选择 I Will start the session later,finish。下图标的就是配置好的Session,可以点
击右侧的Edit按钮重新命名。
启动
1.在DNA Developer 中以Debug模式启动配置了JProfiler 命令参数的程序
2.控制台中出现以下提示信息,等待JProfiler GUI启动。
3.打开JProfiler 在Open Session 页签中选择之前配置好的Session。
4.Start,并在随后的提示框点击OK,回到DNA Developer,可以看到控制台中的信息,程序已经开始启动。同时JProfiler也已经开始监控。
JProfiler和中间件整合
JProfiler可以和tomcat,weblogic,webspere等流行的中间件整合。整合后,通过JProfiler 启动中间件,可以在JProfiler中检查中间件系统的CPU,内存等资源在运行时的使用情况。 启动JProfiler后,默认会弹出“Quick Start”窗口,“Quick Start”窗口也可以通过选择菜单栏中Help->Show Quickstart Dialog弹出。
选择“An application server,locally or remotely”,点击“Next”,进入中间件选择页面
选择相应的中间件软件和版本,点击“Next”,进入服务器地址配置页面
选择“On this computer”本地服务,不需要配置服务器地址,点击“Next”进入中间件脚本文件选择页面,
选择中间件启动脚本后,点击“Next”进入JVM版本选择页面
选择JVM的生成厂商,版本,设置后会自动生成适当的模式,不需要重新选择。点击“Next”进入端口设置页面,
此端口是JProfiler界面连接到JVM,获取系统CPU,内存,线程等运行情况的端口,使用默认即可,不需要修改。点击“Next”进入设置中间件启动方式页面,
选择“Wait for a connection from the JProfiler GUI”方式,启动JProfiler检测中间件运行情况时可以启动中间件。选择“Don’t wait, startup immediately”方式,启动JProfiler检测中间件运行情况前需要单独启动中间件(通过配置完成后生成的启动脚本启动)。点击“Next”,显示配置的详细信息,确认无误后,点击“Next”进入完成配置页面
配置成功后,JProfiler会生成一个默认名称的session,以后可以通过选择菜单中
Session->Start Center,在页面中选择相应的名称点击“OK”启动session,如下图
在配置成功后,JProfiler会根据用户配置和选择的中间件启动脚本生成在JProfiler下启动中间件的启动脚本,并放在和中间件启动脚本相同的目录下,名称是:中间件启动脚本名称后+“_jprofiler”。如果中间件的启动脚本如果有修改,需要重新配置生成启动脚本,否则修改的内容在JProfiler启动中间件时不会起作用。
JProfiler和Eclipse整合
选择菜单栏中Session->IDE Integrations,进入页面
选择eclipse版本后点击“Integrate”按钮,会提示关闭eclipse,确认eclipse后,点击“OK”,弹出提示框,显示系统检测到的eclipse安装目录,如果不正确,可以点击“NO”,选择eclipse的安装目录,
点击“Yes”,安装ecplise 的JProfiler插件。
完成配置后启动ecplise,默认情况下,启动ecplise时不会检测是否按照了新插件,可
以通过命令行方式启动ecplise,通过参数设置重新检测插件。打开命令行窗口,却换到ecplise安装目录,输入“ecplise -clean”启动ecplise。
启动ecplise后,选择菜单中Window->Preferences->JProfiler配置JProfiler。然后就可以检测程序运行情况,如下图
JProfiler视图
内存视图Memory Views
JProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。
记录对象 Record objects
记录和显示对象的的实例数和所占的内存空间。
分配访问树 Allocation call tree
显示一棵请求树或者方法、类、包或对已选择类有带注释的分配信息的J2EE组件。
分配热点 Allocation hot spots
显示一个列表,包括方法、类、包或分配已选类的J2EE组件。你可以标注当前值并且显示差异值。对于每个热点都可以显示它的跟踪记录树。
默认情况下,JProfiler是不会跟踪所有创建的对象的,这样不仅可以减少剖析代理在执
行速度和内存消耗上的运行时间开销,而且便于我们将重点集中到我们关心的重要的应用模块,同时减少内存视图界面大量冗余信息造成的视觉混乱。
堆遍历 Heap walker
在JProfiler的堆遍历器(Heap walker)中,你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对象。堆遍历器有五个视图。
类 Classes
显示所有类和它们的实例。
分配 Allocations
为所有记录对象显示分配树和分配热点。
索引 References
为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示功能。还能提供合并输入视图和输出视图的功能。
数据 Data
为单个对象显示实例和类数据。
时间 Time
显示一个对已记录对象的解决时间的柱状图。
CPU视图 CPU Views
JProfiler 提供不同的方法来记录访问树以优化性能和细节。线程或者线程组以及线程状况可以被所有的视图选择。所有的视图都可以聚集到方法、类、包或J2EE组件等不同层上。CPU视图部分包括:
访问树 Call tree
显示一个积累的自顶向下的树,树中包含所有在JVM中已记录的访问队列。JDBC,JMS
和JNDI服务请求都被注释在请求树中。请求树可以根据Servlet和JSP对URL的不同需要进行拆分。
热点 Hot spots
显示消耗时间最多的方法的列表。对每个热点都能够显示回溯树。该热点可以按照方法请求,JDBC,JMS和JNDI服务请求以及按照URL请求来进行计算。
访问图 Call graph
显示一个从已选方法、类、包或J2EE组件开始的访问队列的图。
线程视图 Thread Views
对线程剖析,JProfiler提供以下视图:
线程历史 Thread history
显示一个与线程活动和线程状态在一起的活动时间表。
线程监控 Thread monitor
显示一个列表,包括所有的活动线程以及它们目前的活动状况。
死锁探测图表 Deadlock Detection 显示一个包含了所有在JVM里的死锁图表。
目前使用的监测器 Current monitor useage 显示目前使用的监测器并且包括它们的关联线程。
历史检测记录 History usage history 显示重大的等待事件和阻塞事件的历史记录。
监测使用状态 Monitor usage statistics 显示分组监测,线程和监测类的统计监测数据。
VM 遥感勘测技术 VM telemetry Views
观察JVM的内部状态,JProfiler提供了不同的遥感勘测视图,如下所示:
堆 Heap
显示一个堆的使用状况和堆尺寸大小活动时间表。
记录的对象 Recorded objects
显示一张关于活动对象与数组的图表的活动时间表。
垃圾回收 Garbage collector
显示一张关于垃圾回收活动的活动时间表。
类 Classes
显示一个与已装载类的图表的活动时间表。
线程 Threads
显示一个与动态线程图表的活动时间表。
因篇幅问题不能全部显示,请点此查看更多更全内容