性能调优必备神器 — Jprofiler解析

1516 篇文章 61 订阅
1428 篇文章 54 订阅

01、安装JProfiler

从http://www.ej-technologies.com/下载5.1.2并申请试用序列号

02、主要功能简介

1.内存剖析 Memory profiler

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

  • 所有对象

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

  • 记录对象 Record objects

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

  • 分配访问树 Allocation call tree

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

  • 分配热点 Allocation hot spots

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

2.堆遍历 Heap walker

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

  • 类 Classes

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

  • 分配 Allocations

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

  • 索引 References

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

  • 数据 Data

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

  • 时间 Time

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

3.CPU 剖析 CPU profiler

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

  • 访问树 Call tree

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

  • 热点 Hot spots

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

  • 访问图 Call graph

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

4.线程剖析 Thread profiler

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

  • 线程历史 Thread history

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

  • 线程监控 Thread monitor

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

  • 死锁探测图表 Deadlock Detection

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

  • 目前使用的监测器 Current monitor useage

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

  • 历史检测记录 History usage history

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

  • 监测使用状态 Monitor usage statistics

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

5.VM 遥感勘测技术 VM telemetry

观察JVM的内部状态,JProfiler提供了不同的遥感勘测视图,如下所示:

  • 堆 Heap

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

  • 记录的对象 Recorded objects

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

  • 垃圾回收 Garbage collector

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

  • 类 Classes

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

  • 线程 Threads

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

03、配置

一、 JProfiler’s start center

在安装完毕后打开会有一个页面向导

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

在菜单中选择 start center,也可以打开这个向导页面、有以下四个标签:Open session、New session、Convert session和 Open snapshot。

我们可以先看第一个——

1.1 Open session

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

  • 你可以选择一个会话,点击 OK来打开预定义的会话。

  • 会话也可以被修改、复制、删除和排序。

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

1.2 New session

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

第一种:人工配置:使用New session]按钮手工配置一个新的session,配置完成后,开始运行(如何配置详见下面)

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

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

1.2.1 New Session(人工配置创建)
点击 New Session按钮,显示Application Settings窗体

此页面也可以在菜单中选择 Session–>New Session,打开 New Session 窗体

1.2.2 New server integration(通过集成向导创建)
点击 New server integration按钮,打开集成向导,引导你将 JProfiler与本地或远程的应用服务器进行集成。

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

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

第三步:选择 JVM提供商,版本和模式(也就是指定jdk的版本)
当你选择 jdk版本时,系统会自动选择推荐的模式

第四步、选择 Jprofiler 启动界面方式。
在开发环境,建立选择第一项,很容易修改监测设置;如果你选择不等待,在启动应用服务器之前要先配置监测设置。VM参数依赖于 JProfiler配置文件的位置;配置文件要与远程计算机上的保持同步。

  • wait for a connection from the Jprofiler GUI :监控时 tomcat 需要由 JProfiler来启动

  • startup immediately,connect later with the JProfiler GUI:立即启动,稍后与JProfiler 页面连接

  • profile offline ,JProfiler GUI cannot connect :在脱机情况下,jprofiler gui 无法连接

我选择第一个立即启动稍后连接(有兴趣的可以都尝试一下)

第五步:选择 Tomcat 启动脚本文件路径

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

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

第八步:完成是否立即运行

这里就新建一个session完毕。配置完毕后你会在Open session 中看到你配置的内容。选择启动、因为在第四步中选择了第一种。所以会出现

选择第二个、之后会出现

点击ok、则启动成功了!

这里有个问题:

在第四步中如果选择了第二种。那么无论是tomcat启动没有启动JProfiler都启动不了抛出一个Connection error的错

待排查

而在第四步选择第三种方式时。tomcat有没有启动JProfiler抛上面相同的错误。同上面。

待排查

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

二、 管理 session(不做详解)

2.1 Application settings dialog
这个页面可以是在创建session时管理,也可在open session右键编辑管理(如前面人工配置图片)
session 名称 session类型等根据需要自定义

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

学习安排上!

最后:【可能给予你助力的教程】

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值