1 idea安装jprofiler插件
2 安装外置的监测结果视图展示软件并配置在idea上
jprofiler_windows-x64_9_2_1.exe
破解碼:L-Larry_Lau@163.com#36573-fdkscp15axjj6#25257
安装完配置在idea上
3 检测视图使用
RUN GC 垃圾回收,当前环境下垃圾回收
Mark current 以当前性能状态为对比,difference会清0,相当于重置
start recordings 开始监测
stop recordings 相当于停止监测,以当前监测结果作为分析
3.1 选择一个类对象进行推波动分析
3.2 切换到references选中对象点击show in graph展示对象引用报表
3.3 选中一对象点击show paths to gc root 展示引用的根路径关系
3.4 点击allocations显示对象创建过程
主要功能简介:
- Telemetries 监控信息:
查看JVM的运行信息
-
Live memory 内存剖析
JProfiler的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。
-
All Objects 所有对象
显示类或在状况统计和尺码信息堆上所有对象的包。你可以标记当前值并显示差异值。
-
Record objects 记录对象
显示类或所有已记录对象的包。你可以标记出当前值并且显示差异值。
-
Allocation call tree 分配访问树
显示一棵请求树或者方法、类、包或对已选择类有带注释的分配信息的J2EE组件。
-
Allocation hot spots 分配热点
显示一个列表,包括方法、类、包或分配已选类的J2EE组件。你可以标注当前值并且显示差异值。对于每个热点都可以显示它的跟踪记录树。
-
Heap walker 堆遍历
在JProfiler的堆遍历器(Heap walker)中,你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对象。堆遍历器有七个视图:
-
Classes 类
显所有类和它们的实例。
-
Allocations 分配
为所有记录对象显示分配树和分配热点。
-
Biggest Objects 大对象
显示占用内存多的对象
-
References 索引
为单个对象和"显示到垃圾回收根目录的路径"提供索引图的显示功能。还能提供合并输入视图和输出视图的功能。
-
Time 时间
显示一个对已记录对象的解决时间的柱状图。
-
CPU views CPU剖析
JProfiler 提供不同的方法来记录访问树以优化性能和细节。线程或者线程组以及线程状况可以被所有的视图选择。所有的视图都可以聚集到方法、类、包或J2EE组件等不同层上。CPU视图部分包括:
-
Call tree 访问树
显示一个积累的自顶向下的树,树中包含所有在JVM中已记录的访问队列。JDBC,JMS和JNDI服务请求都被注释在请求树中。请求树可以根据Servlet和JSP对URL的不同需要进行拆分。
-
Hotspots 热点
显示消耗时间最多的方法的列表。对每个热点都能够显示回溯树。该热点可以按照方法请求,JDBC,JMS和JNDI服务请求以及按照URL请求来进行计算。
-
Call graph 访问图
显示一个从已选方法、类、包或J2EE组件开始的访问队列的图。
Method Statistics
Call Trace
JavaScript XHR
-
Threads 线程剖析
对线程剖析,JProfiler提供以下视图
-
Thread history 线程历史
显示一个与线程活动和线程状态在一起的活动时间表。
-
Thread monitor 线程监控
显示一个列表,包括所有的活动线程以及它们目前的活动状况。
-
Thread Dumps
-
Monitors & locks
-
Current Locking Graph 死锁探测图表
显示一个包含了所有在JVM里的死锁图表。
-
Current Monitors 目前使用的监测器
显示目前使用的监测器并且包括它们的关联线程。
-
Locking History Graph
-
Monitor History 历史检测记录
显示重大的等待事件和阻塞事件的历史记录。
-
Monitor Usage Statistics 监测使用状态
显示分组监测,线程和监测类的统计监测数据。
启动容器:
这里选择立刻开始启动容器并进行监控,或者以后再启动。
立刻开始:启动窗口并监视JVM;
以后再启动:在Start Center->Open Session中查找创建的session并启动。
我们选择立即启动。
在启动过程还会出现以下几个窗口,选择默认即可。
9.1 Instrumentation重构模式
JProfiler将对需要分析的class字节码文件中写入自己的bytecode, 对于正在运行的JVM实例选择此模式将会重新加载字节码文件到JVM的运行时数据区域结构中 .
* 这是JProfiler全功能模式,在此设置中,调用堆栈信息是准确的,但是CPU开销可能很高( 取决于Filter的控制 ),若要分析的类较多,则对应用的性能产生影响,因此使用此模式一般配合Filter使用,只对特定的类或包进行分析.
9.2 Sampling抽样模式
此模式对CPU的开销非常低,但不支持某些功能( 方法的执行次数、执行时间等 ), 这种模式在连接正在运行的JVM实例时更为安全.
配置Filter( 适用于Instrumentation数据采集模式 )
配置Trigger( 多用在离线的启动模式 )
监控启动后如下图所示,我们便可以开始对应用进行监控了。
视图介绍:
Telemetries视图:包含JMM内存的使用情况( 全局堆与非堆、局部伊甸园区、幸存者区、老年代)、GC线程的活动情况( 发生GC的时间,是属于Minor GC还是Full GC )、当前JVM实例的线程概况、CPU的负载等信息.
Live Memory视图:展示当前堆中实例的个数、方法的调用链等信息.
方法调用链信息:
Heap Walker视图:用于堆的快照分析,可以选择在Live Memory中记录的对象或者当前运行状态时堆的对象也可以直接在对象视图右键对象Show Selection In Heap Walker.
CPU Views视图:可以按运行顺序逐级查看当前程序运行时的耗时、在一定时间内统计方法的执行效率.
程序运行耗时:
一定时间内统计方法的执行效率( 单位:微秒 ):
Total Time:执行总时长.
Inv:执行的次数.
Avg Time:方法平均执行时长.
Median Time:第中间次数的执行时长.
Min Time:最短执行时长.
Max Time:最大执行时长.