Jprofiler分析视图简介

Telemetries:遥测

该模块是对应用服务监控数据的一个图表概览
Jprofiler分析视图简介_第1张图片
在这里插入图片描述
  • Overview:概览,该以图表形式汇总了当前应用服务器的资源使用情况
  • Memory:内存占用,统计内存已使用和空闲的空间
  • Record Objects:堆实例对象记录,以数组和非数组形式来分类记录堆上的对象和数组数量
  • Record Throughput:对象创建回收记录,记录单位时间间隔内对象创建和回收的数量
  • GC Activity:垃圾回收,统计垃圾回收率
  • Classes:类加载数量,分为CPU已加载和CPU未加载
  • Thread:线程活动状态,线程活动数量
  • CPU Load:单位时间间隔内CPU的占有率

应用技巧

Memory/Thread/CPU Load比较常用。

  • 若运行垃圾回收后,发现Memory还是内存回收不稳定,还是存在蓝色区域持续增高现象,可能系统出现内存泄漏
  • 若Thread模块出现多处红色标注的线程阻塞,说明系统有程序比较好使,需排查启用异步执行


    Jprofiler分析视图简介_第2张图片
    在这里插入图片描述
  • 若CPU Load占用率持续升高,说明系统存在请求长时间占用资源不释放的问题,需要优化


    Jprofiler分析视图简介_第3张图片
    在这里插入图片描述

Live memory:实时内存视图

该模块动态显示对象堆内存的使用情况


Jprofiler分析视图简介_第4张图片
在这里插入图片描述
  • All Object:所有对象,显示所有加载的类列表和堆上分配的实例数及占用的堆空间,可以安装不同的类型进行查看,例如:类,包,组件
  • Record Object:记录对象,显示所有已记录的类列表,堆上分配的实例数及占用的堆空间,可以按照不同的类型进行查看,例如:类,包,组件。
    记录对象和所有对象的区别:记录对象是active,也就是说正在被使用或者已经被使用的对象,所有对象是指加载进来的所有对象。
  • Allocation Call Tree:分配访问树,分配调用树视图,可以根据请求方法,类,包,组件显示
  • Allocation Hot Spots:分配热点,显示所选类的对象被分配在哪儿的方法列表,分配至少占总数的1%才会被显示
  • Class Tracker:类跟踪器,显示类所标记的类或者包的实例随时间的变化

应用技巧

在这里可以查看类或者方法的内存占用情况,若发现某个类或者方法内存占用比较高,或者某段时间占用持续升高,就可以关注这个类或者方法,是不是采用类占用大量内存的手法。
点击【mark current values】可以对当前的监控数据进行标记,褐红色代表内存的占用情况,绿色代表参考时间点。这样就可以观察内存的使用,对象的创建和gc的使用情况等。
点击【mark current values】后,All Object和Record Object会多出一列Difference,该列显示类当前时间对象实例数量较之标记时刻对象实例数量的差值,以数字和百分比显示。


Jprofiler分析视图简介_第5张图片
在这里插入图片描述

Heap Walker:堆遍历视图

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

Jprofiler分析视图简介_第6张图片
在这里插入图片描述

应用技巧

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

CPU views:CPU视图

从5个子分析视图共同组成,从不同层面展示类程序对cpu的使用情况


Jprofiler分析视图简介_第7张图片
在这里插入图片描述
  • Call Tree:以树结构自顶向下显示线程方法调用树已经各个方法对cpu的使用情况
  • Hot Sports:显示消耗内存最多的类型树列表,每个节点显示具体方法占用cpu的比例
  • Call Graph:显示一个从已选方法,类,包或J2EE组件开始的访问队列的图
  • Method Statistics:记录了方法调用的时间细节
  • Call Tracer:记录多线程方法调用的时间顺序
  • JavaScript XHR Origin Tracking:js原始请求追踪,需要借助Google浏览器的扩展插件

应用技巧

观察某个时间段内线程对应cpu的使用情况,如果某个方法对cpu长时间的高频占用,那程序肯定会慢,这时就要检查该方法中是否有什么非常耗时的计算。

Threads:线程视图

该模块主要用来监控管理线程的运行状态。


Jprofiler分析视图简介_第8张图片
在这里插入图片描述
  • Threads History:动态显示线程列表及线程的历史运行状态
    绿色:表示线程正在运行并能接受CPU时间
    橙色:表示线程正在睡眠等待计时器或者其他线程唤醒
    红色:表示线程阻塞
    蓝色:表示线程Net I/O操作,线程在等待Java库的网络操作完成,在线程监听socket链接或者等待读写数据到socket中
  • Threads Monitor:显示所有线程的运行列表,包括执行状态,开始时间等
  • Threads Dump:显示所有线程的堆栈跟踪

应用技巧

根据Threads History可以查看当前系统是否有线程堵塞的情况。若存在,只需在当前线程右键选择“show call tree for selected Thread”,在call tree视图查看线程分配调用树以及cpu的占用率,在相关的类方法上右键选择“call graph ”可以直观查看线程调用树并追踪阻塞的方法或者类。

Monitor & locks:锁视图

该模块显示类JVM内部锁及监控运行的状态

Jprofiler分析视图简介_第9张图片
在这里插入图片描述
  • Current Locking Graph:显示JVM当前的锁定情况
  • Current Monitors:显示等待或者阻塞的线程
  • Locking History Graph:显示记录在JVM中锁定历史
  • Monitor History:显示历史等待或者阻塞的线程
  • Monitor Usage Statistics:静态计算统计监控器搜集的数据

应用技巧
通过Current Locking Graph可以很直观的查看当前线程锁定状态及线程和监视器的关系
黄色箭头:线程等待
红色箭头:线程死锁
黑色箭头:指示了监视器对线程的所有权

Batabases:数据库快照对比

该模块给出类5中预定义的数据库探针,JDBC, JPA/Hibernate ,MongDB, Cassandra ,HBase,可根据自身程序所采用的数据库框架选择合适的探针,进行性能测试。

JEE & Probes:Java探针

MBeans:可管理资源

你可能感兴趣的:(Jprofiler分析视图简介)