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