JProfiler是一个全功能的Java剖析工具,它不仅可以用于检查和跟踪系统整体的性能,还支持将软件作为插件组合到强大的应用程序中,提供多种ide和应用服务器整合的实用型途径,同时在软件自带的可视化gui界面我们可以直观的了解到应用程序所存在的效能瓶颈以及内存漏失,JProfiler的GUI可以让你方便的找到效能瓶颈、内存泄漏(memory leaks)、并解决执行线程的问题。JProfiler是一个功能强大的工具,您可以使用它以动态的方式分析基于Java的应用程序,并使您能够分析它们,从而优化性能。
JProfiler mac软件特色
实时分析本地会话
一旦定义了应用程序的启动方式,JProfiler就可以对其进行概要分析,并立即从配置的JVM中查看实时数据。为了消除对会话配置的需要,您可以使用 众多IDE插件中的一个来从您喜欢的IDE中分析应用程序。
实时分析远程会话
通过修改java start命令的VM参数,您可以让任何Java应用程序从JProfiler GUI中侦听连接。配置文件应用程序不仅可以在本地计算机上运行,JProfiler还可以通过网络连接到配置文件应用程序。此外,JProfiler 为所有流行的应用程序服务器提供了 大量的集成向导,可帮助您设置应用程序以进行性能分析。
脱机分析和触发器
您不必将JProfiler GUI连接到配置文件应用程序以对其进行分析:使用 离线分析, 您可以使用JProfiler强大的触发系统或JProfiler API来控制分析代理并将快照保存到磁盘。稍后您可以在JProfiler GUI中打开这些快照,或使用命令行导出工具或导出ant任务以编程方式导出概要分析视图。
快照比较
在JProfiler中,您可以将所有当前性能分析数据的快照保存到磁盘。JProfiler提供了丰富的比较工具,可以查看两个或更多快照之间发生了哪些变化。或者,您可以使用命令行比较工具或比较ant任务以编程方式创建比较报告。
查看HPROF快照
JProfiler可以打开已使用jVMsole或jmap等JVM工具或由-XX:+ HeapDumpOnOutOfMemoryError JVM参数触发的HPROF快照。
请求跟踪
凭借创新的请求跟踪概念,JProfiler可以更轻松地分析并行和多线程编程。请求跟踪通过调用树视图中的超链接将呼叫站点与不同线程之间的执行站点连接起来。可以跟踪以下多线程系统:
来自java.util.concurrent包的执行程序
Kotlin协同程序
AWT活动
SWT活动
线程开始
此外,如果在JProfiler中分析和打开两个JVM,JProfiler可以跟踪跨JVM边界的调用。可以跟踪以下远程呼叫。
HTTP请求
RMI打电话
Web服务调用
远程EJB调用
轻松创建自定义探针JProfiler提供了一个自定义探针向导,允许您直接在JProfiler GUI中定义自定义探针。您的自定义探针由JProfiler部署到配置文件应用程序,您甚至不必在更改或添加自定义探针时重新启动配置文件应用程序。以下是JProfiler中概要分析视图的高级概述:
内存分析
JProfiler的内存视图部分提供有关内存使用情况的动态更新视图,以及显示有关分配点的信息的视图。所有视图都有多个聚合级别,可以显示实时和垃圾回收对象
所有对象
显示堆上所有对象的类或包,包含实例计数和大小信息。您可以标记当前值并显示差异。
录制的对象
显示所有记录对象的类或包。您可以标记当前值并显示差异。
分配调用树
显示一个调用树或方法,类,包或Java EE组件,其中包含所选类的带注释的分配。
分配热点
显示分配所选类的方法,类,包或Java EE组件的列表。您可以标记当前值并显示差异。可以为每个热点显示回溯树。
类跟踪器
显示一个时间线,其中包含所选类的实例计数图。
堆沃克
在JProfiler的堆walker中,您可以通过执行选择步骤获取堆的快照并深入查看感兴趣的对象。堆walker有五个视图:
类
显示所有类及其实例。
分配
显示记录对象的分配树和分配热点。
最大的对象
显示阻止堆的最大部分被垃圾收集的对象。可以扩展支配树以显示这些保留的对象。
参考
显示具有原始数据的单个对象的传出引用和带有“显示垃圾收集器根路径”功能的传入引用。还提供传入和传出引用的累积视图。在传出引用视图中,您可以应用筛选器。有两种不同的过滤器类型:按原始值过滤和使用脚本过滤。
数据
显示单个对象的实例和类数据。
时间
显示记录对象的时间分辨直方图。
检查
在检查视图中,您可以对当前对象集运行多个检查,以便以各种方式分析对象。
图形
在图中,您可以添加来自不同对象集的对象,并通过打开传入和传出引用,查找所选对象之间的路径以及显示垃圾收集器根的路径来探索它们之间的关系。
CPU分析
JProfiler提供了各种记录调用树的方法,以优化性能或细节。可以为所有视图选择线程或线程组以及线程状态。可以在方法,类,包或Java EE组件级别上聚合所有视图。CPU视图部分包含:
呼叫树
显示JVM中所有已记录调用序列的累积自上而下的树。JDBC,JMS和JNDI服务调用被注释到调用树中。可以将调用树拆分为不同的请求URL到servlet或JSP。您可以标记“异常方法运行记录”的方法,并分别查看最慢的调用。通过请求跟踪,您可以将呼叫站点连接到多线程应用程序中的执行站点。
热点
显示最耗时的方法列表。可以为每个热点显示回溯树。
调用图
显示从所选方法,类,包或Java EE组件开始的调用序列图。
方法统计
显示有关所有方法的呼叫时间分布的统计信息以及可用于发现异常值的呼叫时间分布图。
呼叫追踪器
显示按线程,包和类分组的方法调用的记录时间顺序跟踪。
线程分析
对于线程分析,JProfiler提供以下视图:
线程历史
显示具有线程活动和线程状态的时间线。
线程监视器
显示所有活动线程及其当前活动的列表。
线程转储
您可以在线程转储视图中进行多个线程转储并对其进行分析。
监控分析
对于监视器分析,JProfiler提供以下视图:
当前锁定图
显示JVM中所有等待和阻塞情况的图表。
电流监视器
显示当前使用的监视器及其关联的线程。
锁定历史图表
以图形形式显示记录的等待和阻止情况的历史记录。
监控历史记录
显示记录的等待和阻止事件的历史记录。
监控使用情况统计
显示按监视器,线程和监视器类分组的监视器的统计信息。
VM遥测
为了观察JVM的内部状态,JProfiler提供了各种遥测视图:
堆
显示一个时间线,其中包含已使用堆和堆大小的图形。
录制的对象
显示一个时间线,其中包含已记录的活动对象和数组的图形。
记录的吞吐量
显示时间线,其中包含已记录对象的对象创建和垃圾回收率的图表。
GC活动
显示带有垃圾收集器活动图表的时间线。
类
显示带有已加载类图的时间线。
主题
显示带有活动线程图的时间线。
CPU负载
显示时间线,其中包含已配置应用程序生成的CPU负载的图表。
数据库
JProfiler支持以下数据库的特定探测:
JDBC
JPA / Hibernate
MongoDB的
卡桑德拉
HBase的
JEE和探针
JProfiler提供探针:
JDBC
JPA / Hibernate
ETC.
JNDI
RMI
网页服务
Servlet的
档
套接字
流程
探针显示以下信息:
时间线
在时间线视图中,探针将其控制对象显示为沿时间轴的彩色条。控件对象是与单个探测事件关联的长寿命对象。例如,在JDBC探针中,控制对象是数据库连接。时间线条上的颜色对应于控制对象可以处于的不同状态。
控制对象
有关控制对象的表格详细信息显示在控制对象视图中。它显示有关控制对象的更多详细信息以及记录事件的统计信息,例如文件I / O的总吞吐量。通过过滤器控件和底部的总线,您可以对控件对象的子集进行快速求和。某些探针在嵌套表中显示其他详细信息,您可以在其中打开一个对话框,以更详细地显示有趣的多行值。例如,进程的命令行参数可能非常长。
热点
在热点视图中,探针显示由执行时间排序的探测事件发布的有效负载名称的热点。例如,文件探针显示文件名,JDBC探针显示SQL字符串,JNDI探针显示查询。每个热点都可以扩展,以显示有助于热点的背景痕迹。
遥测数据
在遥测视图>中,您可以看到探测器发布的各种遥测。
活动
事件视图显示探测器记录的单个事件。事件具有线程和堆栈跟踪信息,您可以轻松跳转到关联的控制对象。同样,过滤器和总行允许您对所选事件求和。