前言

Eclipse内存映像分析工具插件有MAT,IDEA也有JProfiler,本文主要对JProfiler安装及使用进行学习。

JProfiler是什么

JProfiler 是一个专业工具,用于分析正在运行的 JVM 内部发生的情况。 在开发中你可以使用它,用于质量保证,也可以解决你的生产系统遇到的问题。

JProfiler 处理四个主要场景:

方法调用

这通常称为“CPU 分析”。方法调用可以在不同的方法。方法调用的分析帮助您了解您的应用程序是什么正在做并想方设法提高其性能。

• 分配

分析堆上对象的分配、引用链和垃圾集合属于“内存分析”类别。此功能使您能够修复内存泄漏,通常使用更少的内存并分配更少的临时对象。

• 线程和锁

线程可以持有锁,例如通过在对象上同步。当多个线程合作,可能会发生死锁,JProfiler
可以为您可视化它们。另外,锁也可以争用,这意味着线程必须等待才能获取它们。 JProfiler 提供深入了解线程及其各种锁定情况。

• 更高级别的子系统

许多性能问题发生在更高的语义级别上。例如,对于 JDBC 调用,您可能想找出最慢的 SQL 语句。对于这样的子系统,JProfiler
提供了将特定负载附加到调用树的“探针”。


JProfiler 的 UI 是作为桌面应用程序交付的。您可以交互式地分析活动的 JVM 或配置文件在不使用 UI
的情况下自动进行。分析数据保存在可以打开的快照中使用 JProfiler UI。此外,命令行工具和构建工具集成可以帮助您自动化分析会话。

JPROFILER 最新版本13.0 添加了对附加到在 Kubernetes 集群中运行的 JVM 的支持。

安装

IDEA安装插件JProfiler

在这里插入图片描述

官网下载Jprofiler软件

https://www.ej-technologies.com/download/jprofiler/files
在这里插入图片描述

IDEA配置Jprofiler执行文件

在这里插入图片描述需要激活码

使用

可配合IDEA使用,也可单独使用分析hprof文件。需激活
在这里插入图片描述
可以选择运行中的JVM监测。
在这里插入图片描述

在这里插入图片描述

指标分析

在这里插入图片描述

VM TELEMETRY

为了观察 JVM 的内部状态,JProfiler 提供了各种遥测视图:

Heap

用图表显示已用堆和堆大小的时间线。

Recorded objects

显示带有已记录的活动对象和数组的图表的时间线。

Recorded throughput

显示时间线以及记录对象的对象创建率和垃圾回收率图表。

GC activity

显示带有垃圾收集器活动图的时间线。

Classes

显示带有加载类图的时间线。

Threads

显示带有活动线程图的时间线。

CPU load

显示时间线和分析的应用程序生成的 CPU 负载图。

在这里插入图片描述

MEMORY PROFILING

JProfiler 的内存视图部分提供动态更新的内存使用视图和显示分配点信息的视图。所有视图都有多个聚合级别,可以显示活动对象和垃圾收集对象。

All objects

显示堆上所有对象的类或包以及实例计数和大小信息。您可以标记当前值并显示差异。

Recorded objects

显示所有记录对象的类或包。您可以标记当前值并显示差异。

Allocation call tree

显示调用树或方法、类、包或 JEE/Spring 组件,并带有选定类的注释分配。

Allocation hot spots

显示分配所选类的方法、类、包或 JEE/Spring 组件的列表。您可以标记当前值并显示差异。可以为每个热点显示回溯树。

Class tracker

显示带有所选类的实例计数图表的时间线。

在这里插入图片描述

HEAP WALKER

在 JProfiler 的堆遍历器中,您可以拍摄堆快照并通过执行选择步骤深入到感兴趣的对象。heap walker 有五个视图:

Classes

显示所有类及其实例。

Allocations

显示记录对象的分配树和分配热点。

Biggest objects

显示阻止堆的最大部分被垃圾收集的对象。支配树可以就地展开以显示这些保留的对象。

References

显示带有原始数据的单个对象的传出引用和带有“显示垃圾收集器根路径”功能的传入引用。还提供传入和传出参考的累积视图。在传出参考视图中,您可以应用过滤器。有两种不同的过滤器类型:按原始值过滤和使用脚本过滤。

Data

显示单个对象的实例和类数据。

Time

显示记录对象的时间分辨直方图。

Inspections

在检查视图中,您可以对当前对象集运行许多检查,以各种方式分析您的对象。

Graph

在图中,您可以添加来自不同对象集的对象,并通过打开传入和传出引用、查找选定对象之间的路径以及显示垃圾收集器根路径来探索它们的关系。

在这里插入图片描述

CPU PROFILING

JProfiler 提供了多种方法来记录调用树以优化性能或细节。可以为所有视图选择线程或线程组以及线程状态。所有视图都可以在方法、类、包或 JEE/Spring 组件级别上聚合。CPU 视图部分包含:

Call tree

显示 JVM 中所有记录的调用序列的累积自上而下树。JDBC、JMS 和 JNDI 服务调用被注释到调用树中。调用树可以针对不同的请求 URL 拆分到 servlet 或 JSP。您可以将方法标记为“异常方法运行记录”,并分别查看最慢的调用。通过请求跟踪,您可以将调用站点连接到多线程应用程序中的执行站点。

Hot spots

显示最耗时的方法列表。可以为每个热点显示回溯树。

Call graph

显示从选定方法、类、包或 JEE/Spring 组件开始的调用序列图。

Method statistics

显示有关所有方法的调用时间分布的统计信息以及调用时间分布图,可用于发现异常值。Call tracer

Call tracer

显示按线程、包和类分组的方法调用的记录时间跟踪。

在这里插入图片描述

THREAD PROFILING

对于线程分析,JProfiler 提供以下视图:

Thread history

显示具有线程活动和线程状态的时间线。

Thread monitor

显示所有活动线程及其当前活动的列表。

Thread dumps

您可以获取多个线程转储并在线程转储视图中分析它们。

在这里插入图片描述

MONITOR PROFILING

对于监视器分析,JProfiler 提供以下视图:

Current locking graph

显示 JVM 中所有等待和阻塞情况的图表。

Current monitors

显示当前使用的监视器及其相关线程。

Locking history graph

以图表的形式显示记录的等待和阻塞情况的历史记录。

Monitor history

显示记录的等待和阻塞事件的历史记录。

Monitor usage statistics

显示按监视器、线程和监视器类别分组的监视器的统计信息。

在这里插入图片描述

DATABASES

JProfiler 支持对以下数据库的特定探测:
JDBC
JPA/Hibernate
MongoDB
Cassandra
HBase

在这里插入图片描述

JEE & PROBESJProfiler

提供以下探针:
JDBC
JPA/Hibernate
Servlets
Netty
HTTP requests
Web services
JMS
JNDI
RMI
Files
Sockets
Processes
在这里插入图片描述
点赞 收藏 关注
我寻你千百度 又一岁荣枯 可你从不在灯火阑珊处

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐