CHINA
JProfiler 入门教程
V1.0 适用于JProfiler 7.1.2
作者:赵磊
博客:http://elf8848.iteye.com/
2012/8/7
JProfiler 7.1.2 使用教程 赵磊 2012-08-07
目录
一、JProfiler 介绍 ..................................................................................................................................................... 4
二、启动 JProfiler 7 ................................................................................................................................................... 4
2.1 Quick Start 菜单 ................................................................................................................................................ 4
2.2 Srart Center 菜单 .............................................................................................................................................. 5
2.2.1 Srart Center-> Open Session 菜单介绍 ....................................................................................................... 5
2.2.2 使用 JProfiler 自带的示例演示内存泄露和线程阻塞 .............................................................................. 5
2.2.3 Srart Center-> New Session 菜单介绍 ...................................................................................................... 14
三、JProfiler 的监控方式介绍: ............................................................................................................................. 14
1. 等待模式 ......................................................................................................................................................... 14
2. 非等待模式 ..................................................................................................................................................... 14
3. 离线模式 ......................................................................................................................................................... 14
四、JVM 工具接口(JVM TI)介绍 .............................................................................................................................. 15
五、服务端 JProfiler 代理工具(Agent)加载原理................................................................................................... 15
六、创建监视本地 Tomcat 的工程(等待模式) .................................................................................................. 15
6.1 进入创建菜单................................................................................................................................................ 16
6.2 选择使用的服务器容器 ................................................................................................................................. 16
6.3 选择 Tomcat 容器的位置 .............................................................................................................................. 17
6.4 选择虚拟机类型 ............................................................................................................................................. 18
6.5 确认启动监控的方式 ..................................................................................................................................... 19
6.6 选择容器启动脚本 ........................................................................................................................................ 20
6.7 选择监控端口................................................................................................................................................ 21
6.8 最后确认信息................................................................................................................................................ 22
6.9 启动容器 ....................................................................................................................................................... 23
七、创建监视远程 Tomcat 的工程(等待模式) .................................................................................................. 24
7.1 测试环境 ........................................................................................................................................................ 24
7.2 JProfiler 软件下载地址: ............................................................................................................................... 24
7.3 客户端 JProfiler 安装 .................................................................................................................................... 24
7.4 服务器端 JProfiler 安装 ................................................................................................................................ 24
7.5 客户端连接配置 ............................................................................................................................................. 24
2
八、创建监视远程 Tomcat 的工程(非等待模式) ............................................................................................... 25
九、创建监视远程 Java 程序的工程 ....................................................................................................................... 25
JProfiler 7.1.2 使用教程 赵磊 2012-08-07
3
JProfiler 7.1.2 使用教程 赵磊 2012-08-07
一、JProfiler 介绍
JProfiler 是一个非常优秀的的 JVM 分析工具,可监视本地和远程的 JVM,适用于各种操作系统。
常用的功能有:
1、 监视堆内存占用情况和创建对象实例的数量找出内存泄露。
2、 监视占用 CPU 较多的方法
3、 监视线程的阻塞与死锁
4、 监视 GC 的耗时。
监视本地 JVM(Windows):
需要安装 JProfiler windows 版本
监视远程的 JVM(Linux):
客户端需要安装 JProfiler windows 版本
服务需要安装 JProfiler Linux 版本
客户端与服务端通过 socket 通信
JProfiler 软件下载地址:
http://www.ej-technologies.com/
http://www.ej-technologies.com/download/jprofiler/files.html
(不需要注册就可以下载)
本文以 JProfiler 7.1.2 为例进行讲解。
二、启动 JProfiler 7
2.1 Quick Start 菜单
每次启时弹出“快速启动”菜单,它的不重要,可以关闭它。“快速启动”菜单能实现的功能在后面的 Srart Center
菜单中都可以实现。
在菜单的第一选项就是示例工程和你以前保存过的工程。
4
JProfiler 7.1.2 使用教程 赵磊 2012-08-07
2.2 Srart Center 菜单
2.2.1 Srart Center-> Open Session 菜单介绍
主菜单->session->Srart Center 是创建与管理监视项目的总入口, 是最常用的功能。如下图:
每次打开,默认展示的是第一个选项卡“Open Session”。在菜单的第一选项卡“Open Session”中是示例工程
和你以前保存过的工程。如下图:
其中 Animated 是一个监视 Swing 动画的演示、JDBC 是一个监视 JDBC 的演示、Applet 是一个监视网页小程序
演示。
2.2.2 使用 JProfiler 自带的示例演示内存泄露和线程阻塞
我们来演示内存泄露和线程阻塞,主菜单->session->Srart Center-> Open Session 窗口中,选第一个示例项目
Animated Beaier Curve Demo,点击 Start 按钮,在下一个窗口中都使用默认值,按 OK 按钮。这时示例程序就开始运
行了,你就可以监视 JVM 的状态了。并且可以手动控制是否开始 模拟内存泄露,和模拟线程阻塞的情况。
运行起来后情况如下图:
5
JProfiler 7.1.2 使用教程 赵磊 2012-08-07
在下图中有前两个复选框,可以模拟内存泄露,线程阻塞的情况。
Leak memory: 模拟内存泄露
Simulate blocking : 模拟线程阻塞
6
JProfiler 7.1.2 使用教程 赵磊 2012-08-07
2.2.2.1 监视堆内存的增长情况
经过长时间的运行,发现如下图的情况:
下图:前半部分是模拟内存泄露,后半部分是关闭了模拟内存泄露。可发现内存泄露时 Heap 内存呈增长趋势。可
在大方向上发现存在内存泄露,但不知是具体原因什么引起的。
2.2.2.2 查看内存中对象的实例数量
点击如下图的菜单,可以开始查看内存中对象的实例数量
查看内存中对象的实例数量,找出不能被回收的对象。经过长时间的观察,下图中的 HashMap$Entry 实例数量
7
JProfiler 7.1.2 使用教程 赵磊 2012-08-07
一直在增长,最早时 HashMap$Entry 数量是 1 万左右,现在是 16 万多。可以断定就是它没有被释放。
不一定数量最多的实例就是泄露,要根据业务情况分析。如果 1 个用户登录操作数据库,创建了一个连接,用户退
出后,这个连接实现数量没有-1 (你开发时设计的会-1),就正明发生了泄露。
可以通过包名过滤,只显示你开发的类,这个功能是非常有用的。
查看实例数量增长趋势图 1:
8