整合到Eclipse,
(执行整合前,先关闭Eclipse)
主菜单–> Session –>IDE Intergrations –>选择Eclipse (某版本)
执行“Integrate” ,选择Eclipse所在的文件夹。如:D:\Java\eclipse
4 以D:\eclipse\eclipse.exe –clean 方式启动eclipse(目的是清除插件缓存,仅需第一次加此参数)
5.在Eclipse里配置JProfiler.
主菜单–>Window–>Customize Perspective –>Commands –>找到Profile ,
选中它,再点OK即可。
2 配置tomcat项目并启用监控
假设你手头上有个项目是要发布在tomcat服务器上的,例如笔者手头上的项目名称是DSPMSU_For_Display,tomcat服务器是7.x版本,下面我们讲解如何对这个本地的tomcat7服务器进行监控,细节如下:
点击Session→Integration Wizards→New Server Integration→Apache Tomcat 7.x→On this computer→勾选你的JVM信息→Waif for a connection from the JProfiler GUI(就是由JProfiler帮你启动tomcat)→选着你的startup.bat→保持默认端口8849→启动。
tips:
1. 你在JProfiler中保存的这个session,如果你双击运行它,它的实质也是去调用startup.bat来启动,因此假如你已经手动启用了tomcat然后又在JProfiler启动这个session,这时候就会报错--端口被占用;
2. 监控过程中,假如tomcat意外关闭,这时候会报下面这样一个错误,错误提示你要勾选"Keep VM alive",在Start Center编辑你保存的session→Profiling Settings选项卡→Customize Profiling Settings→Miscellaneous→Keep VM alive即可。
这么强大的一个工具,怎样性能监控呢?这个课题太大,我们把范围缩小一点,如何入门呢?偶然在CSDN上找到一位blogger的博文,里面的“实战”例子绝对可以让你对性能监控有一个直观的认识。
请先花几分钟看看这篇博文:JProfiler学习笔记
.
.
.
.
.
.
.
几分钟很快就过去了,让我们做以下几个总结:
1. 在Memory Views视图里右击相关类,选中Mark Current Values可以标记当前值,方便后续进行比较,注意绿色和红色之分;
标记完之后,通过GUI界面可以很方便的看出值的变化情况
2. 按F4或者点击窗体上面的绿色图标Run GC可以通知JVM进行垃圾回收的动作(只是通知,不是强制回收);
3. 在Memory Views视图里右击相关类,点选Show Selection In Heap Walker可以进行堆内存跟踪;
4. 在Heap Walker视图中右击相关类,点选Used Selected Instances→Allocation Tree可以看到关于该类的调用细节和内存使用情况。
Allocation tree看的是调用树,你也可以根据需要选择其他选项。
模块的介绍主要是对JProfiler的具体功能进行介绍,部分内容参照自博客:JProfiler 解决 Java 服务器的性能跟踪,如果读者英文阅读能力比较强也可以在工具栏上边点击Help,直接阅读英文帮助,下文部分内容亦是参照自英文API。
JProfiler的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。
在JProfiler的堆遍历器(Heap Walker)中,你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对象。堆遍历器有五个视图:
tips:在工具栏点击"Go To Start"可以使堆内存重新计数,也就是回到初始状态。
JProfiler 提供不同的方法来记录访问树以优化性能和细节。线程或者线程组以及线程状况可以被所有的视图选择。所有的视图都可以聚集到方法、类、包或J2EE组件等不同层上。CPU视图部分包括:
JProfiler通过对线程历史的监控判断其运行状态,并监控是否有线程阻塞产生,还能将一个线程所管理的方法以树状形式呈现。对线程剖析,JProfiler提供以下视图:
JProfiler提供了不同的监控器视图,如下所示:
观察JVM的内部状态,JProfiler提供了不同的遥感勘测视图,如下所示:
Key 1,把目光集中到上图的蓝色部分,可以发现每次内存上升到一个峰值之后便会下跌,这个动作其实就是GC在回收内存,并且上升和回收的幅度大抵相同,如果你发现内存图中可用内存随着时间的流逝一直在上升而没有GC回收的动作,那么你就要怀疑它是否存在着内存泄露了;
Key 2,当你怀疑内存泄露时,可以在Memory Views视图Mark Current Values,然后在一段时间后F4,找出那个没有被释放掉的异常类对其进行深一步的追踪;
Key 3,追踪主要使用Heap Walker的各项功能,各功能具体能做何种分析请复习章节3.1直观认识和3.2.2 堆遍历 Heap Walker。