搜索
您的当前位置:首页正文

jprofiler 中文文档

来源:欧得旅游网
JProfiler使用说明1

JProfiler 使用说明

(版本号1.0)

2008年1月

第 1 页 共 80 页

JProfiler使用说明1

文档更改历史记录

序号 1 2 3 4 5 6 7 8 9

主要更改内容 建立文档

版本号 1.0

更改人

更改时间 2008-01-11

第 2 页 共 80 页

JProfiler使用说明1

目 录

1 JPROFILER'S START CENTER........................................5

1.1 OPEN SESSION..............................................................................5 1.2 NEW SESSION...............................................................................6

1.2.1 1.2.2

New Session............................................................................................6 New server integration............................................................................7

1.3 CONVERT SESSION.....................................................................17 1.4 OPEN SNAPSHOT........................................................................17

2 管理SESSION.......................................................................18

2.1 APPLICATION SETTINGS DIALOG.................................................18

2.1.1 2.1.2

session名...............................................................................................18 session类型...........................................................................................18

2.2 PROFILING SETTINGS..................................................................20

2.2.1 2.2.2

Adjusting call tree collection options....................................................20 JAVA 子系统........................................................................................23

3 监测视图................................................................................27

3.1 内存视图..................................................................................27

3.1.1 3.1.2 3.1.3 3.1.4

所有对象(ALL objects)...................................................................28 记录的对象(Recorded objects).......................................................29 分配调用树(Allocation call tree )..................................................29 分配热点视图(Allocation hot spots view)...................................29

第 3 页 共 80 页

JProfiler使用说明1

3.1.5 类跟踪(Class tracker)......................................................................30

3.2 CPU视图...................................................................................30

3.2.1 3.2.2 3.2.3

调用树视图(Call tree view)............................................................30 热点视图(Hot spot view)................................................................33 调用图(Call graph)..........................................................................34

3.3 线程视图..................................................................................40

3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6

线程历史视图.......................................................................................40 线程监控视图.......................................................................................41 死锁检测图形.......................................................................................43 当前监控使用视图...............................................................................43 监控使用历史视图...............................................................................44 监控使用统计.......................................................................................44

3.4 VM遥感监测视图....................................................................45

3.4.1 3.4.2 3.4.3 3.4.4 3.4.5

Heap......................................................................................................45 Objects...................................................................................................45 Garbage collector..................................................................................45 Classes...................................................................................................45 Threads..................................................................................................45

4 IDE集成(ECLIPSE 3.X).................................................46

第 4 页 共 80 页

JProfiler使用说明1

1 JProfiler's start center

使用JProfiler's start center,你可以创建新的会话,编辑已有会话或者打开已保存的会话。

在菜单中选择session Æstart center ,有以下四个标签:Open session、New session、Convert session和Open snapshot。

也可以在工具栏中点击

图标打开start center。

1.1 Open session

在start center 中,打开Open session标签,在窗口中显示所有预先定义的会话,如图:

你可以选择一个会话,点击OK来打开预定义的会话。 会话也可以被修改、复制、删除和排序。

也可以菜单中选择session Æ Open session,打开Open session窗口。

第 5 页 共 80 页

JProfiler使用说明1

1.2 New session

会话能够通过两种途径创建:

9 人工配置:使用 [New session] 按钮手工配置一个新的 session,配置完成后,开始运行

9 通过集成向导:使用集成向导上的三个按钮:[New server integration] 、[New remote integration] 和 [New applet integration] 。

9 会话创建完成后可以立即运行。在Open session标签页中能够看到新建的会话。

1.2.1 New Session

点击New Session按钮,显示Application Settings窗体,关于Application Settings配

第 6 页 共 80 页

JProfiler使用说明1

置,请参见2管理session

可以在菜单中选择SessionÆNew Session,打开New Session 窗体

1.2.2 New server integration

点击New server integration按钮,打开集成向导,引导你将JProfiler与本地或远程的应用服务器进行集成,步骤: 第一步、 选择需要集成的应用服务器

如果你所使用的应用服务器不在列表中,则选择“Generic application sever ”,并点击“下一步”;如图:

第 7 页 共 80 页

JProfiler使用说明1

第二步、 选择要集成的应用服务器地址

选择要集成的应用服务器是本地的,还是远程的。如果你选择过程计算机,在选择的计算机上必须安装JProfiler,并选择远程计算机的操作系统,点击“下一步”如图:

第 8 页 共 80 页

JProfiler使用说明1

第三步、 指定远程地址

输入远程计算机的IP地址或DNS名称,点击下一步。如图:

第 9 页 共 80 页

JProfiler使用说明1

第四步、 指定远程安装目录

所选远程计算机上必须安装JProfiler,如果未安装,请先安装。如果已经安装,请输入安装目录,点击下一步。如图:

第 10 页 共 80 页

JProfiler使用说明1

第五步、 选择启动脚本

选择所集成的应用服务器的启动脚本,如,TOMCAT在WINDOW下常用的启动脚本为start.dat。如果脚本是远程的,你必须有远程计算机磁盘的可写权限,或者将启动脚本拷贝到本地。 批注 [U1]: 未试过 第 11 页 共 80 页

JProfiler使用说明1

第六步、 选择JVM提供商,版本和模式

当你选择JAVA版本时,系统会自动选择推荐的模式

第 12 页 共 80 页

JProfiler使用说明1

第七步、 选择监测的连接端口

JProfiler GUI 前端通过指定的端口连接被监测的JVM,默认端口为8849。请不要选择常用的端口,如80或8080。

第 13 页 共 80 页

JProfiler使用说明1

第八步、 是否等待JProfiler GUI

在开发环境,建立选择第一项,很容易修改监测设置;如果你选择不等待,在启动应用服务器之前要先配置监测设置。VM参数依赖于JProfiler配置文件的位置;

配置文件要与远程计算机上的保持同步。

第 14 页 共 80 页

JProfiler使用说明1

第九步、 检查需求通知

集成向导完成配置,所有必须的信息会进行通知,请检查,点击下一步。如图:

第 15 页 共 80 页

JProfiler使用说明1

第十步、 完成

选择是否立即运行

第 16 页 共 80 页

JProfiler使用说明1

1.3 Convert session

可能转换已经存在的本地的 session 成为远程session或者是offline profiling sessions

1.4 Open snapshot

可以通过打开*.jps文件来打开原来保存过的session

第 17 页 共 80 页

JProfiler使用说明1

2 管理session

2.1 Application settings dialog

2.1.1 session名

可以根据自己的需要给session命名

2.1.2 session类型

2.1.2.1

Local sessions:

2.1.2.2

Remote sessions

第 18 页 共 80 页

JProfiler使用说明1

可以连接由JPofiler剖析代理启动的应用。剖析代理监听的默认端口是8849

第 19 页 共 80 页

JProfiler使用说明1

2.1.2.3 Applet sessions

用来剖析applets,你需要提供包含applet的HTML页面的URL

2.1.2.4

Web Start sessions

也可以剖析Java Web Start 应用,只需要给出JNLP 文件的URL或者选择一个缓冲应用

2.2 Profiling settings

2.2.1 Adjusting call tree collection options

第 20 页 共 80 页

JProfiler使用说明1

2.2.1.1

dynamic instrumentation(动态获取)

选择动态获取,在JVM加载类时,JProfiler 修改所有未过滤的类的字节码。JAVA

核心类(java.*)会自动被过滤掉,无法剖析。动态获取比取样式更加精确。

2.2.1.2

sampling

JProfiler 定期检查所有线程调用的堆栈数。即使不进行过滤,取样方式也会快很多,但精通性很低并且不能实时显示

取样周期可以在1-20 ms间调整。如果取样太频繁,会导致CPU占用过高。

第 21 页 共 80 页

JProfiler使用说明1

2.2.1.3 full instrumentation(全部获取)

所有的方法调用都会被跟踪,这样可以监控到JAVA核心类(java.*),但比动态获取慢,尤其是1.4 JVMs 。在1.5 JVMs (JVMTI)中不能使用。

使用全部获取你可以随意地显示具体的类调用的方法而不是某个方法在哪个类中实现。

2.2.1.4

活动过滤设置( active filter sets )

9 Exclusive(独占的)

在下表中,你为会话选择哪些过滤集是活动的。这些过滤器指定CPU监控的结束点。在包或类中匹配过滤集中的某一个,进一步的调用其它被过滤的类将在调用第一个被过滤的方法时失败。在被过滤的类中,方法是不透明的并且在call tree view中标为红色.

过滤集可以在general settings的\"Filter sets\" 标签中设定。 9 Inclusive(包含的)

输入逗号分隔类和包的过滤器。在CPU监控中,只有符合这些包或类的调用才能够被显示。

例如,如果你指定com.mycorp.,com.othercorp. 作为一个包含的过滤器,一个调用com.mycorp.MyClass.myMethod() 和它做的所有调用才会被度量和显示。而所有从 com.mycorp.MyClass.myMethod() 发起的调用都不属于包com.mycorp 和com.othercorp ,它们是不透明的并且在call tree view.标识为红色。

第 22 页 共 80 页

JProfiler使用说明1

2.3 JAVA 子系统

在此标签下,你可以选择JProfiler如何记录J2EE相关的JAVA子系统。 9 记录服务调用

JProfiler 使用仪器监控几个J2EE服务层并记录象服务调用的执行时间等语义数据。记录仪器不需要依赖,可以为所有驱动或服务提供商工作。服务调用在call tree view中有解释并且可以在hot spot view选为热点。

下面的服务类型可以被单独激活:

第 23 页 共 80 页

JProfiler使用说明1

󰂄 JDBC calls 󰂄 JMS calls 󰂄 JNDI calls 9 J2EE awareness

如果选择了Split call tree for each request URL , JProfiler将分析调用servlets 和 JSPs的URL。针对每个URL,在call tree中都创建一个新的节点。URL也能够在hot spot 这样做的话,你可以在单独的页面或请求中区分性能问题。 view选择成了一个热点类型。

缺省,只有没有查询参数的URL会使用上面的分离进程。为了在call tree中保留选择的参数,你可以在retained request parameters文本框中输入要保留的参数。

如果要显示所有的请求,请选择Show request URLs that are outside the call tree.

2.4 features

9

Enabled profiling features

在此标签中,你可以调整监控的属性,以提高软件执行速度,减少内存使用。

Disabled profiling features

o Disable call tree collection

When you record CPU data or allocations, JProfiler collects information about the call tree. You might want to record allocations without the overhead of recording the allocation call stacks: If you don't need the allocation view in the heap walker, the allocation call tree and the stack trace information in the

monitor usage views, you can switch off call tree collection. This will speed up profiling considerably and reduce memory usage.

o Disable monitor contention views

if you are not interested in monitor contention events, you may switch data collection off by selecting this checkbox to lower the memory consumption of the profiled application. If monitor contention views are enabled, the

following settings govern the level of detail for the monitor contention views:

󰂃 Monitor contention threshold

Select the minimum time threshold in microseconds (µs) for which a monitor contention (i.e. when a thread is blocking) is displayed in the monitor usage history view.

第 24 页 共 80 页

JProfiler使用说明1

󰂃 Monitor waiting threshold

Select the minimum time threshold in microseconds (µs) for which a monitor wait state (i.e. when a thread is waiting) is displayed in the monitor usage history view.

Allocation call tree

The information depth of the allocation call tree and the allocation hot spots view is governed by this setting.

o Live objects

By default, only live objects can be displayed by the allocation views. Class-resolution is enabled.

o Live and GCed objects without class resolution

Live and garbage collected objects can be displayed by the allocation views, depending on the selection in the allocation options dialog. Class-resolution is disabled, i.e. class selection in the allocation options dialog will not work in this setting, only the cumulated allocations of all classes and array types can be displayed. This setting consumes more memory than the first setting and adds a considerable performance overhead.

o Live and GCed objects

Live and garbage collected objects can be displayed by the allocation views, depending on the selection in the allocation options dialog. Class-resolution is enabled. This setting consumes more memory than the other settings and adds adds a considerable performance overhead.

Select record object allocation time if you would like to be able to

o use the time view in the heap walker

o sort objects by allocation time in the reference graph and the data view

of the heap walker.

o See allocation times for the current objects in the reference graph and the data view of the heap walker.

This setting consumes more memory for recorded objects.

Call tree

By default, JProfiler does not resolve line numbers in call trees. If you enable show line numbers for sampling and dynamic instrumentation, line number resolution will be enabled for the call tree collections modes of \"Sampling\" and \"Dynamic

instrumentation\". For \"Full instrumentation\

第 25 页 共 80 页

JProfiler使用说明1

If the aggregation level is set to \"methods\" and a method calls another method multiple times in different lines of code, line number resolution will show these invocations as separate method nodes in the call tree and the allocation call tree. Backtraces in the hotspot views will also show line numbers.

Note that a line number can only be shown if the call to a method originates in an unfiltered class.

第 26 页 共 80 页

JProfiler使用说明1

3 监测视图

3.1 内存视图

JProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。

第 27 页 共 80 页

JProfiler使用说明1

3.1.1 所有对象(ALL objects)

所有对象视图显示所有加载的类的列表和在堆上分配的实例数。只有Java 1.5 (JVMTI)才会显示此视图。要查看特定时间段对象的分配,并记录分配的调用堆栈,请使用“记录的对象视图”

有一个集合体等级选择器,你可以在以下几种类型中切换:

9 类(classes):每一行显示一个单独的类,这是默认的集合体类型

9 包(packages):每一行显示一个单独的包,子包不包含在内。在这个集合体

等级内,表是树形的。你可以点击树节点,查看其包含的类

9 J2EE组件( J2EE components):每一行是一个J2EE组件。此模式类似类模

式中的过滤器,能够让你快速检查应用中加载的J2EE组件。

在表中显示三行,可以排序

9 名字:根据集合体等级的不同,分别显示类、包或J2EE 9 实例数:

9 大小:显示所以分配实际的总大小。只包括相应指针的大小,不包含引用数组

和实例的大小。以字节显示。只包括对象数据,不包括类使用的JVM大小,也不包含类数据和本地变量大小。

更新频率可以在profiling settings dialog的miscellaneous tab中设置。所有对象视图的更新频率是根据堆上的对象数来自动调整的,如果堆上有太多对象,所有对象视图的计算变得昂贵,所以更新频率会降低。你可以随时刷新以获取最新数据。

你可以在class tracker增加包或类。如果类跟踪器没有记录,则开始记录class tracker 中配置的所有类;如果正在记录不同的对象类型,所以的记录数据被清空

你可以冻结所有的视图让所有的视图对象保持静态 你可以标记当前值并显示差异值。

第 28 页 共 80 页

JProfiler使用说明1

3.1.2 记录的对象(Recorded objects)

记录的对象视图显示所有已记录对象和数组的列表,包括堆上分配的实例数。只有已记录的对象在此视图中显示。配置记录的细节请参见memory section overview

如果选择了某个包或类,你可以从记录对象视图跳转到分配调用树和分配热点。方法是右键点击,选择要跳转的视图。

你可以在class tracker增加包或类。如果类跟踪器没有记录,则开始记录class tracker 中配置的所有类;如果正在记录不同的对象类型,所以的记录数据被清空

记录的对象视图可以根据对象的活动状态进行过滤: 9 活动对象(Live objects)

只显示当前在内存中的对象

9 垃圾回收对象(Garbage collected objects)

被显示被回收的对象

9 活动的和垃圾回收对象(Live and garbage collected objects)

显示所有被创建的对象

右键选择Change view mode 或者使用View->Change view mode切换三种模式 你可以标记当前值并显示差异值。

3.1.3 分配调用树(Allocation call tree )

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

3.1.4 分配热点视图(Allocation hot spots view)

分配热点视图显示所选类的对象被分配在哪儿的方法列表。分配到至少占总数1%的方法才会被显示。方法可以根据active filter sets设置进行过滤。此视图和CPU section 里的hot spots view视图有些类似,只是显示的是分配的类的实例数和数组而不是时间度量

第 29 页 共 80 页

JProfiler使用说明1

对于每个热点都可以显示它的跟踪记录树。

3.1.5 类跟踪(Class tracker)

3.2 堆遍历(Heap Walker)

3.2.1 类(Classes)

显示所有类和它们的实例

3.2.2 分配(Allocations)

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

3.2.3 索引(References)

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

3.2.4 数据(Data)

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

3.2.5 时间(Time)

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

3.3 CPU视图

3.3.1 调用树视图(Call tree view)

调用树显示一个线程从上向下调用树。可以根据过滤设置向上或向下过滤显示。 JProfiler自动检测J2EE组件并在调用树中显示相关的节点。使用不同的图标显示不同的J2EE组件类型

9 servlets:黄色倒心形 9 JSPs:蓝色倒心形

第 30 页 共 80 页

JProfiler使用说明1

9 EJBs:红色倒心形

对于JSPs 和EJBs, JProfiler显示名为: 9 JSPs:JSP 源文件路径 9 EJBs:EJB界面名称

如果URL可以被细分,每个URL请求使用一个特殊的符号创建一个新的结点以URL:做前缀,后面跟上细分后的URL请求 调用树视图集合体等级选择有四种:

9 方法,也是默认等级。每个节点都是一个方法调用。特殊的J2EE组件方法有

他们自己的图标和显示名,上面讲到过。真实的类名以方括号括起

9 类:每个节点是一个单独的类。特殊的J2EE组件方法有他们自己的图标和显

示名,上面讲到过。真实的类名以方括号括起 9 包:每个节点是一个单独的包。不包括子包

9 J2EE组件:每个节点是一个J2EE组件,如果组件有独立的显示名,真实类名

省略。

调用树不显示JVM中的所有方法,只显示:

9 未过滤的类:根据你配置的过滤器设置没有过滤的类

9 未过滤的类的第一级调用: 未过滤的类对过滤的类的第一级调用,对过滤类

的深一级的调用不显示。过滤的节点在左上角以红色标记。

9 线程实体方法: 方法Runnable.run()和主方法总是被显示的,无论是否过滤 一个特殊的结点是桥结点,本来在视图中不显示,但其子孙节点在视图中显示。 如果在 view settings中设置了percentage bar模式,调用树中的每个节点都会显示一个百分比条,显示当前节点的内部时间占总时间的百分比,当前节点包括其所有子孙节点和红色高亮的部分

在view settings可以设置以下内容:

第 31 页 共 80 页

JProfiler使用说明1

1) 节点描述

󰂄 百分比数:考虑树的根或调用节点

󰂄 总时间度量:ms或µs 。包括调用其它节点的总时间。 󰂄 内部时间度量:ms或µs。内部时间,不包括调用非过滤类 󰂄 invocation count:显示在此路径中节点被调用的频繁程度。 󰂄 是否显示方法调用全名

󰂄 是否显示方法调用签名(显示参数) 󰂄 是否在括号内显示平均时间 2) 时间范围

󰂄 自动 󰂄 s 󰂄 ms 󰂄 us

第 32 页 共 80 页

JProfiler使用说明1

3) 显示极限

󰂄 隐藏小于一定百分比的调用 4) 百分比计算

󰂄 绝对 󰂄 相对

名称显示依赖集合体等级:方法、类、包和J2EE组件

行数在以下情况下会显示:行数显示的是调用(invocation)的行数,还不是方法本身的行数

9 集合体等级

为方法

9 在profiling settings设置中选择了显示行数 9 调用类为未过滤类

你可以选择任何一个节点,然后选择View->Set as root ,将选择的节点改为根节点。如果在view settings 里,百分比基数设置为“total thread time”,百分比会按照新的根节点重新计算。选择View->Show all返回所有视图

你可以停止或重启CPU数据获取来清空调用数,也可以冻结所有视图让调用数保持静态

3.3.2 热点视图(Hot spot view)

热点视图显示选择类型的调用列表。截去了占总时间小于0.1%的点。 热点类型\"hot spot type\"下拉中可选择,包括两种: 9 方法调用(method calls)

󰂄 method calls (show filtered classes separately)

从方法调用中计算显示的热点,被过滤的类计算自己的热点,默认为此模式。 󰂄 method calls (add filtered classes to calling class)

从方法调用中计算显示的热点,被调用的类被加到调用类上,除非是线程实体方法(run和main 方法)

第 33 页 共 80 页

JProfiler使用说明1

󰂄 根据你选择的集合体等级不同,方法热点也会变换。 9 J2EE 相关的调用

󰂄 JDBC calls

显示的热点为JDBC 调用。需要在profiling settings中设置为可用。 󰂄 JMS calls

显示的热点为JMS 调用。需要在profiling settings中设置为可用。

󰂄 JNDI calls

显示的热点为JNDI 调用。需要在profiling settings中设置为可用。

󰂄 URL invocations

显示的热点 URL调用。需要在profiling settings中设置为可用。在profiling settings中,你需要指定是所有的URL都被显示,还是调用一个未过滤类的URL才会被显示,默认为后者。

3.3.3 调用图(Call graph)

调用图静态地显示所选择节点计算出线程调用图。节点可以为方法、类、包或J2EE组件。

计算调用图,点击工具栏中的Generate graph或者选择View->Generate graph 。 在图形计算之前,会启动调用图向导。结果图形是静态的,并能够重新计算。调用图向导会记录你最近一次的选项。

调用图向导如下: 第一步:选择图选项

第 34 页 共 80 页

JProfiler使用说明1

调用图能够为所有线程、一个线程组和单个线程的所有集成等级生成调用图。线程状态选择可以控制在调用图中显示的时间含义。如在线程状态中,选择了Runnable,在调用图中,Total Time表示的就是线程处于Runnable的时间。

第二步:选择第一个节点:选择生成调用树的首节点,点击完成,生成调用树。

第 35 页 共 80 页

JProfiler使用说明1

系统提供工具栏,可以对图形进行不同的显示操作。

第 36 页 共 80 页

JProfiler使用说明1

显示调用当前所选节点的所有节点 显示被当前所选节点调用的所有节点 删除所选节点 移除未连接的方法 显示比例1:1 符合窗口尺寸 选择图展现方式选择图展现方式,包括四种方式:

1) 按等级展现

2) 按等级展现(由上到下) 3) 组织式展现 4) 正交展现

还可以选择一个节点,右键,显示的图形如下:

第 37 页 共 80 页

JProfiler使用说明1

与屏幕右方显示的工作栏中基本操作一样,一些不同的,下面说明。Show Source:显示此方法或类的源代码,如下图。

第 38 页 共 80 页

JProfiler使用说明1

Show Bytecode:显示此方法或类的字节码,如下图:

第 39 页 共 80 页

JProfiler使用说明1

3.4 线程视图

3.4.1 线程历史视图

按照线程开始的顺序显示JVM中所有线程状态的详细历史信息

在视图左手点,线程的名字固定显示,其它部分是滚动度量工具,在水平轴上显示时间。时间轴的开始时间与JVM的第一个线程的时间保持一致。每个活动的线程用带颜色的线标明,从线程开始到线程结束。颜色标识线程的状态:

9 绿色

绿色表明线程正在运行并能接收CPU时间。不表明线程正在消耗CPU时间,只表明线程准备运行并且没有阻塞或睡眠。线程被分配了多少CPU时间,依赖于不同的其它因素,如总的系统负载,线程优先级和调度的运算法则

9 橙色

第 40 页 共 80 页

JProfiler使用说明1

橙色表示线程在等待。线程正在睡眠并等待计时器或其它线程唤醒 9 红色

红色表示线程阻塞。线程尝试进入同步代码区或由其它线程控制的同步方法 9 蓝色

亮蓝色表示线程在Net I/O操作,线程在等待JAVA库的网络操作完成。在线程监听socket连接或者等待读写数据到socket中时,会产生这种状态。

在视图的顶部,有一个线程过滤器,你可以按以下方法进行过滤: 9 活动状态liveness status

活动的和死线程Both alive and dead threads 󰂄 只显示活动的线程 󰂄 只显示死线程 9 名称

在文本框中,你可以输入线程的全名或部分名称进行过滤。也可以使用通配符(\"*\" and \"?\")选择线程组。可以用逗号隔开多个过滤项进行过滤,如AWT-, MyThreadGroup-*-Daemon.

线程历史视图有两种显示模式: 9 固定时间范围fixed time scale

此种模式下,时间轴的刻度一直保持不变,如果显示超出屏幕范围,可以使用滚动条查看,如果视图是在自动跟踪模式下,刚总是显示当时时间下的图形。

也可以使用 zooming in或zooming out来调整显示的范围。 9 固定窗口范围scale to fit window

此种模式下,在当前视图中会显示整个时间段的图形。Zooming在此模式下不能使用

3.4.2 线程监控视图

显示当前运行的线程列表以及相关的时间和状态信息。

第 41 页 共 80 页

JProfiler使用说明1

显示的六列: 9 名称Name

显示线程名称,如果线程没有被特别命名,则使用JVM提供的名称。想让此视图更加有用,最好将你自己创建的线程使用setName() 进行命名。

9 组Group

显示与此线程相关的线程组的名称 9 Start time

显示线程开始的时间,时间是根据JVM中第一个线程创建的时间还计算的。 9 End time

只有在view settings设置了显示死线程时才能看到这一列,显示线程死去的时间,或者线程还活着但成为空线程的时间,时间是根据JVM中第一个线程创建的时间还计算的。

9 CPU time

显示线程消耗的CPU时间

Note: CPU时间一列,只有在profiling settings中的Miscellaneous栏中设置CPU time type 为Estimated CPU times ,并且当你记录CPU数据时,CPU时间才会被度量,否则CPU时间一栏总是空的。

如果你的系统和JVM不支持线程特定的CPU时间报告,这栏也是空的 9 Creating thread

显示线程的名字和创建此线程的线程组。 9 Status

显示线程的状态,相当于线程历史视图中的状态报告

如果你监控的是JAVA1.5或以上版本(JVMTI),在屏幕的上半部分就显示上面的表,屏幕的下半部分显示所选线程的线程创建堆栈跟踪。堆栈跟踪只有线程创建时记录CPU数据才会显示。

第 42 页 共 80 页

JProfiler使用说明1

3.4.3 死锁检测图形

JVM中所有死锁的图形化显示.

正常的状态如果没有死锁,就显示\"No deadlocks detected\" 死锁根据以下情况进行分析:

9 在JAVA平台上建立的最初的同步机制,如:使用同步的关键词

9 在java.util.concurrent包中的锁机制,不使用对象的监控而是不同的实现机制 死锁检测图形有以下特征:

9 在死锁中的线程以紫色的矩形表示。矩形包括以下信息:

󰂄 线程名

󰂄 线程组(括号括起来)

9 在死锁中的监视器以灰色的矩形表示,包括以下信息:

󰂄 监控的类

󰂄 可以用来继续跟踪的监控ID

9 监控器的所有权用实线箭头表示。箭头指向从线程到监控器。想要了解详细信

息,把鼠标停留到箭头上,可以看到提示窗口

9 导致线程死锁的阻塞原因使用虚线箭头来表示。前头指向从阻塞线程到线程想

进行的监控器

3.4.4 当前监控使用视图

显示当前等待和阻塞的操作 显示以下6列:可排序 9 时间Time

事件起始时间 9 Duration

事件持续时间,事件必须还在进行中

第 43 页 共 80 页

JProfiler使用说明1

9 Type

事件类型, \"waiting\" 或\"blocked\"中的一种 9 Monitor ID

在特定的监控实例上识别多个事件的ID 9 Monitor class

监控器的类。如果没有JAVA对象与此监控器相关联,刚显示 [raw monitor] 9 Waiting thread

事件中正在或过去在等待的线程

3.4.5 监控使用历史视图

显示监控中等待和阻塞的操作

3.4.6 监控使用统计

显示监控使用的统计信息

点击工具栏上的Calculate statistics,或者选择View->Calculate statistics。 在统计开始前,会打开一个monitor usage statistics options对话框,统计结果表是静态的,并能重新计算。

包级别的统计表包含下面5列: 9 Monitors/Threads/Classes

在统计对象框中按分组标准显示名称 9 Block count

在此监控组中,阻塞操作的频繁程度 9 Block duration

在此监控组中,所有阻塞操作的累积的待续阻塞时间 9 Wait count

在此监控组中,等待操作的频繁程度

第 44 页 共 80 页

JProfiler使用说明1

9 Wait duration

在此监控组中,所有等待操作的累积的待续等待时间

3.5 VM遥感监测视图

3.5.1 堆(Heap)

显示最大的堆大小以及堆中已使用的和未使用的空间大小。可以显示线性图和区域图

3.5.2 对象(Objects)

显示堆上对象的总数,分为数组和非数组。可以显示线性图和区域图

3.5.3 垃圾回收(Garbage collector)

显示垃圾回收活动,包括对象释放的一条线和对象移动的一条线。只显示已记录的对象,如果没有记录对象,此视图不可用

3.5.4 类(Classes)

显示JVM调用的类的总,分为过滤类和非过滤类

3.5.5 线程(Threads)

显示JVM中活着的线程总数,分为活动的线程和不活动的线程。

第 45 页 共 80 页

JProfiler使用说明1

4 操作方法:

4.1 视图导出

视图导出可以导出生成HTML文件或CSV文件,并可设定导出后是否立即打开文件。

4.2 查看源代码和字节码

查看源代码:需要在SessionÆGeneral Setting ÆDefault Java File Path 下的Source Path中设定源代码路径,设定后要重启JProfiler。如下图:

第 46 页 共 80 页

JProfiler使用说明1

查看字节码:需要在SessionÆGeneral Setting ÆDefault Java File Path 下的Class Path中设定发布的类的路径,设定后要重启JProfiler。如下图:

第 47 页 共 80 页

JProfiler使用说明1

4.3 监控设置模板

在会话开始前,会打开监控设置模板,显示一系列为各种情况预先配置好的多种监控设置模板,可以下拉选择。

可以在下拉框中选择 [Customize profiling settings and filters]打开监控设置对话框。见 2.2 Profiling settings

在 Startup一栏里,你能够选择启动时是否立即记录CPU数据或分配数据。在很多监控里对应用的开始阶段不感兴趣。对于大的应用服务器,在开始时不记录会节省大量

第 48 页 共 80 页

内存,加快启动速度

9 record CPU data on startup

invocations view 和 hot spots view 将立即显示数据 9 record allocations on startup recorded objects view 将立即显示数据

JProfiler使用说明1

第 49 页 共 80 页

JProfiler使用说明1

5 在新的窗口中比较快照

当前的视图可以保存下来,选择session-->save snapshot或者使用快捷方式ctrl+s。多个快照可以进行比较,选择session-->compare snapshots in new window,打开一个新的窗口,如图:

5.1 创建内存比较

选择FileÆCreate Memory Comparison,或使用快捷键F5。 第一步:选择比较类型

第 50 页 共 80 页

JProfiler使用说明1

第二步:选择快照

第 51 页 共 80 页

JProfiler使用说明1

5.1.1 对象比较

第三步:选择记录类型 9 全部对象 9 记录对象

第四步:选择集成等级――类、包、组件

第 52 页 共 80 页

JProfiler使用说明1

第五步:查看比较结果

第 53 页 共 80 页

JProfiler使用说明1

5.1.2 分配热点比较

第三步:选择比较的类:所有类、选择的类

第 54 页 共 80 页

JProfiler使用说明1

第四步:选择视图参数 9 集成等级:类、包、组件

9 活动模式:存活对象、垃圾回收对象、存活的和垃圾回收的对象 9 类过滤:独立显示、在调用类上增加分配

第 55 页 共 80 页

JProfiler使用说明1

第五步:查看比较结果(例中无)

第 56 页 共 80 页

JProfiler使用说明1

5.1.3 分配树比较

第三步:选择比较的类:所有类、选择的类

第 57 页 共 80 页

JProfiler使用说明1

第四步:选择视图参数 9 集成等级:方法、类、包、组件 9 活动模式:存活对象、垃圾回收对象、存活的和垃圾回收的对象 批注 [U2]: 此视图的最小集成等级为方法 第 58 页 共 80 页

JProfiler使用说明1

5.2 创建CPU比较

选择FileÆCreate CPU Comparison,或使用快捷键F6 第一步,选择比较类型

第 59 页 共 80 页

JProfiler使用说明1

第二步:选择快照

第 60 页 共 80 页

JProfiler使用说明1

第三步:选择线程

选择第一个快照需要比较的线程

针对第二个快照,有两种选择:与第一个快照相同的线程;不同的线程,可任何选择

第 61 页 共 80 页

JProfiler使用说明1

5.2.1 热点比较

第四步:选择视图参数

9 线程状态:所有状态、可运行的、等待状态、阻塞状态、NET I/O 9 集成等级:方法、类、包、组件

9 热点类型:方法调用、JDBC 调用、JMS调用、JNDI调用 9 不同的计算方法:总调用时间、平均调用时间

第 62 页 共 80 页

JProfiler使用说明1

第五步:查看视图结果

第 63 页 共 80 页

JProfiler使用说明1

5.2.2 调用树比较

第四步:选择视图参数

9 线程状态:所有状态、可运行的、等待状态、阻塞状态、NET I/O 9 集成等级:方法、类、包、组件

9 不同的计算方法:总调用时间、平均调用时间

第 64 页 共 80 页

JProfiler使用说明1

第五步:查看比较结果

第 65 页 共 80 页

JProfiler使用说明1

5.3 创建遥感比较

选择FileÆCreate Telemetry Comparison,或使用快捷键F7 第一步:选择比较类型:

第 66 页 共 80 页

JProfiler使用说明1

第二步:选择要比较的快照

第 67 页 共 80 页

JProfiler使用说明1

只比较选中的快照,在打开比较向导之前,要多选需要比较的快照。 对比所有可用快照。 第三步:选择比较类型 9 当前值(快照存储时的值) 9 最大值 9 某个书签标记值

第 68 页 共 80 页

JProfiler使用说明1

5.3.1 堆比较

第四步:选择要比较的度量,可以多选 9 最大的堆大小 9 未使用的堆大小 9 使用的堆大小

第 69 页 共 80 页

JProfiler使用说明1

第五步:查看比较结果

第 70 页 共 80 页

JProfiler使用说明1

5.3.2 记录对象比较

第四步:选择要比较的度量,可以多选 9 全部对象 9 非数组 9 数组

第 71 页 共 80 页

JProfiler使用说明1

第五步:查看比较结果

第 72 页 共 80 页

JProfiler使用说明1

5.3.3 类比较

第四步:选择要比较的度量,可以多选 9 全部类 9 过滤类 9 未过滤类

第 73 页 共 80 页

JProfiler使用说明1

第五步:查看比较结果

第 74 页 共 80 页

JProfiler使用说明1

5.3.4 线程比较

第四步:选择要比较的度量,可以多选 9 全部线程 9 活动线程 9 不活动线程

第 75 页 共 80 页

JProfiler使用说明1

第五步:查看比较结果

第 76 页 共 80 页

JProfiler使用说明1

第 77 页 共 80 页

JProfiler使用说明1

6 IDE集成(Eclipse 3.x)

当Jprofiler与 eclipse 3.x IDE集成后, JProfiler 不需要配置session ,可以直接在IDE中调用。

需求:需要eclipse 3.0 或eclipse 3.1全部SDK的插件。JProfiler集成不能在eclipse 框架部分安装的情况下使用。

具体安装请参见JProfiler's setup wizard

提醒:请在插件安装之前关闭eclipse,要按照JProfiler's setup wizard来安装JProfiler's,请在完成全部安装之前不要启动eclipse。

文件选择器会提醒你安装在eclipse的安装目录下。

当收到安装完成提示后,你可以打开eclipse并检查安装是否成功。如果在Java perspective中, 菜单Run->Profile ...不存在。请在Window->Customize perspective中,在Command标签中的\"Profile”选项前打勾

从eclipse中剖析应用,在Run菜单下选择profiling 命令,或者点相关的按钮。

第 78 页 共 80 页

JProfiler使用说明1

FAQ:如果远程连接不成功,请检查

1、 本地和监控机是否都安装了JProfiler,并用版本相同 2、 远程JProfiler的安装路径是否正确

3、 本地和监控机的JProfiler的端口是否一致,最好都使用默认的8849

4、 所选JVM的提供商和版本是否正确,可能机子上有多个JAVA版本,一定要选择应用程序启动

时所用的

5、 应用目录必须可写共享,监控机需要映射共享目录,配置完后在本地服务器上会生成JProfiler

监控的启动文件。

第 79 页 共 80 页

JProfiler使用说明1

第 80 页 共 80 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Top