jprofiler9.2入门教程 联系客服

发布时间 : 星期六 文章jprofiler9.2入门教程更新完毕开始阅读

创建监视远程Java程序的工程

如果远程的服务端不是一个容器(Tomcat),而是由 main 方法启动的 Java 程序。 前两点参照第二节做,

在第 3 步时,选择 Session->Integration Wizard->New Server Integratation

其他步骤可参考第二小节的配置

在确认配置框中将新生成JVM启动参数记录下来,在启动该java程序时加入该参数。如下图:

Jprofiler分析视图简介

遥测(Telemetries)

该模块以图表形式汇总了当前应用服务器的资源使用情况 内存占用(Memory):统计内存已使用和空闲的空间

堆实例对象记录(Recorded Objects):以数组和非数组形式来分类记录堆上的对象和数组数量 对象创建回收记录(Recorded Throughput):记录单位时间间隔内对象创建和回收的数量 垃圾回收(gc Actively):统计垃圾回收率

类加载数量(classes):类加载的数量(分为cpu已加载和cpu未加载) 线程活动状态(Thread):线程活动数量

cup负载(cpu load):单位时间间隔内cpu的占有率

应用技巧:

该模块是对应用服务器监控数据的一个图表概览,Memory、Thread、cpu load比较常用。 若Memory出现持续的内存消耗,说明系统存在资源时间长占用不释放放或者内存泄漏的问题 若Thread模块出现多处红色标注的线程阻塞,说明系统有程序比较耗时,需排查启用异步执行 若cup load 占用率持续升高,说明系统存在请求长时间占用资源不释放的问题,需优化。

实时内存视图(Live memory)

该模块动态显示对象堆内存的使用情况。分以下几个子视图:

All Objects(?所有对象):显示所有加载的类列表和堆上分配的实例数及占用的堆空间,可以按照 不同的类型进行查看,例如:类、包、组件

Record Objects(记录对象):显示所有已记录的类列表、堆上分配的实例数及占用的堆空间,可以 按照不同的类型进行查看,例如:类、包、组件。记录对象和所有对象的区别,本人经过测试发现: 记录对象是active,也就是说正在被使用或者已经被使用的对象,所有对象是指加载进来的所有对 象。

Allocation Call Tree(分配访问树):分配调用树视图,可以根据请求方法,类,包,组件进行显示 Allocation Hot Spots:(?分配热点):显示所选类的对象被分配在哪儿的方法列表,注意:分配 至少占总数的1%的方法才会被显示

Class Tracker(类追踪器):显示了所标记的类或者包的实例随时间的变化

应用技巧:

在这里可以查看类或者方法的内存占用情况,若发现某个类或者方法内存占用比较高,或者某 段时间占用持续升高,就可以关注这个类或者方法,是不是采用了占用大量内存的手法。

右击选择mark current values可以对当前的监控数据进行标记,褐红色代表内存的占用情况,绿色 代表参考时间点。这样就可以观察内存的使用,对象的创建和 gc 的使用情况等。在选择了mark Current values 后,All Objects 和Recorded Objects 会多出一列Difference,该列显示了当前时间对象 实例数量较之标记时刻对象实例数量的差值,以数字和百分比的显示。这一列,非常有用,点击该 列按照差值的降序或升序排列,能很快发现对象的变化情况

堆遍历视图(Heap walker)

该模块可明确的查看到对象的引用关系,常用来查找内存泄漏的问题 应用技巧

当你发现某个该释放掉的对象没有释放,就可以看一下哪个实例在引用它,找到了根即 找到了溢出点。例如:在 “Memory Views”中查看发现某个类或者包持续消耗内存不释放, 在该类或包上右击选择 “show section in Heap walker”,即可进入堆视图,在该视图可以 查看对象的堆内存具体分配情况,以及对象的引用和被引用情况。