文档库 最新最全的文档下载
当前位置:文档库 › JProfiler使用说明

JProfiler使用说明

JProfiler使用说明
JProfiler使用说明

一、简介

JProfiler是一个商业授权的Java剖析工具,由EJ技术有限公司,针对的Java EE和Java SE 应用程序开发的。

JProfiler工具主要用于检查和跟踪系统(限于Java开发的)的性能。JProfiler可以通过时时的监控系统的内存使用情况,随时监视垃圾回收,线程运行状况等手段,从而很好的监视JVM运行情况及其性能。

JProfiler直觉式的GUI让你可以找到性能瓶颈、抓出内存漏失(memory leaks)、并解决执行绪的问题。它让你得以对heap walker作资源回收器的root analysis,可以轻易找出内存漏失;heap快照(snapshot)模式让未被参照(reference)的对象、稍微被参照的对象、或在终结(finalization)队列的对象都会被移除;整合精灵以便剖析浏览器的Java外挂功能。

二、安装(略)

三、配置(服务器端)(windows)

注意:此处配置为本地,即直接在服务器端测试,不在客户端测试。若想在客户端测试,服务器端也是如此配置,客户器端配置见下文。(客户端配置与服务器配置不同)

1、打开“QuickStart"对话框

Shift+F1打开“QuickStart"对话框,选择“An application server, locally or remotely”,然后“Next”

2、创建对本地tomcat的监控

3、选择启动批处理文件

4、选择JVM类型

5、选择JProfiler的监听端口

6、检查配置

7、完成

四、配置(客户端)

注意:若只想自服务器端测试,可以跳过此内容,具体步骤见上文。(服务器端配置同上,客户端。)

1、Session >> Integration Wizards >> New Remote Integration

2、选择远程监控的平台wind ows

3、选择Wait for a connect from the Jprofiler GUI

4、输入服务端ip地址

5、输入服务端机器上的jprofiler的安装路径

6、选择jdk版本

7、端口默认8849

8、提示需要的操作

附注:这个是在Jprofiler5的情况下操作,而在Jprofiler7的操作有所不同。

●在被监控的服务器端,修改服务启动文件,如果服务为TOMCAT,将startup.bat文件中

的JAVA_OPTS的后面添加第八步中copy出来的内容:

-agentlib:jprofilerti=port=8849 "-Xbootclasspath/a:D:\Program Files\jprofiler5\bin\agent.jar" 保存此文件。

●在环境变量PATH中添加第八步中copy出来的内容:

D:\Program Files\jprofiler5\bin\windows(注意前面加分号)。

9、服务器端运行startup_jprofiler.bat

在tomcat的bin文件夹下,例如D:\nsoft\tomcat 5.5\bin

五、功能说明

1、内存剖析Memory profiler

1.1、所有对象(All Object)

显示类或在状况统计和尺码信息堆上所有对象的包。你可以标记当前值并显示差异值。

1.2、记录对象(Record objects)

显示类或所有已记录对象的包。你可以标记出当前值并且显示差异值。

1.3、分配访问树(Allocation call tree)

显示一棵请求树或者方法、类、包或对已选择类有带注释的分配信息的J2EE组件。

1.4、分配热点(Allocation hot spots)

显示一个列表,包括方法、类、包或分配已选类的J2EE组件。你可以标注当前值并且显示差异值。对于每个热点都可以显示它的跟踪记录树。

2、堆遍历Heap walker

在JProfiler的堆遍历器(Heap walker)中,你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对象。堆遍历器有五个视图:

2.1、类(Classes)

显示所有类和它们的实例。

2.2、分配(Allocations)

为所有记录对象显示分配树和分配热点。

2.3、索引(References)

为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示功能。还能提供合并输入视图和输出视图的功能。

2.4、数据(Data)

为单个对象显示实例和类数据。

2.5、时间(Time)

显示一个对已记录对象的解决时间的柱状图。

3、CPU 剖析CPU profiler

JProfiler 提供不同的方法来记录访问树以优化性能和细节。线程或者线程组以及线程状况可以被所有的视图选择。所有的视图都可以聚集到方法、类、包或J2EE组件等不同层上。CPU 视图部分包括

3.1、访问树(Call tree)

显示一个积累的自顶向下的树,树中包含所有在JVM中已记录的访问队列。JDBC,JMS和JNDI 服务请求都被注释在请求树中。请求树可以根据Servlet和JSP对URL的不同需要进行拆分。

3.2、热点(Hot spots)

显示消耗时间最多的方法的列表。对每个热点都能够显示回溯树。该热点可以按照方法请求,JDBC,JMS和JNDI服务请求以及按照URL请求来进行计算。

3.3、访问图(Call graph)

显示一个从已选方法、类、包或J2EE组件开始的访问队列的图。

4、线程剖析Thread profiler

对线程剖析,JProfiler提供以下视图

4.1、线程历史(Thread history)

显示一个与线程活动和线程状态在一起的活动时间表。

4.2、线程监控(Thread monitor )

显示一个列表,包括所有的活动线程以及它们目前的活动状况。

4.3、死锁探测图表(Deadlock Detection)

显示一个包含了所有在JVM里的死锁图表。

4.4、目前使用的监测器Current monitor useage)

显示目前使用的监测器并且包括它们的关联线程。

4.5、历史检测记录(History usage history)

显示重大的等待事件和阻塞事件的历史记录。

4.6、监测使用状态(Monitor usage statistics)

显示分组监测,线程和监测类的统计监测数据。

5、VM 遥感勘测技术VM telemetry

观察JVM的内部状态,JProfiler提供了不同的遥感勘测视图,如下所示5.1、堆(Heap)

显示一个堆的使用状况和堆尺寸大小活动时间表。

5.2、记录的对象(Recorded objects)

显示一张关于活动对象与数组的图表的活动时间表。

5.3、垃圾回收(Garbage collector)

显示一张关于垃圾回收活动的活动时间表。

5.4、类(Classes)

显示一个与已装载类的图表的活动时间表。

5.5、线程(Threads)

显示一个与动态线程图表的活动时间表。

六、使用

1、查看哪些类被发生了变化(1)使用界面

(2)可以使用package的方式查看

(3)Mark Current

附注:MarkCurrent之后,即标记现在的状态,然后在测试的时候,增加的内容,会成红色,过一会后,按F4键进行垃圾回收。但回收完成后,有些对象依然存在,说明某些地方对这

个类的引用没有被释放。

2、找出是哪些地方没有释放

在对象上点击右键选择“Take Heap Snapshot for Selection”,观察它的heap

(1)

(2)

(3)

(4)在该类中点击右键,在出现的菜单中选择“Use Selected Objects”

(5)选择”Allocations”,点击“OK”

(6)查看结果

3、VM telemetry (1)内存使用情况

(2)垃圾回收情况

附注:还有其他视图,根据实际需要查看。

七、问题处理

1、The JVM has exited

问题:The JVM has exited. Some profiling infomation will not be available.You can prevent the JVM from existing by selecting "Keep VM alive" on the "Miscellaneous" tab of the profiling settings.

解决:Profiling”->“Show Global Filters For Method Call Recording”->“Profiling Settings”

->“Customize Profiling Settings”->“Miscellaneous”,勾选“Keep VM alive”

相关文档