JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

JProfiler v 11.1 更新发布,在macOS和Linux上添加了没有安全点偏差的异步采样模式。它使用HotSpot JVM中的非标准AsyncGetCallTrace API在任意时间获取调用堆栈,而不仅是在JVM认为是安全点的某些执行状态下。对于高度多线程的CPU绑定代码,此配置文件模式会生成更准确的CPU数据。

请查看更新日志以获取详细的更新列表。

JProfiler 11.1引入了以下显着的新功能:

1、在macOSLinux上添加了没有安全点偏差的异步采样模式。它使用HotSpot JVM中的非标准AsyncGetCallTrace API在任意时间获取调用堆栈,而不仅是在JVM认为是安全点的某些执行状态下。对于高度多线程的CPU绑定代码,此配置文件模式会生成更准确的CPU数据。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

可以通过这种方式测量的唯一线程状态是“正在运行”。等待、阻塞和网络I/O线程状态不可用。与使用“可运行”线程状态来测量何时有资格在CPU上调度线程的其他方法调用记录类型相反,“运行”仅测量实际在CPU上调度线程的时间。获取呼叫堆栈可能会因多种原因而失败,这些原因在“Sampling misss”顶级节点中概述。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

异步采样使用的预分配缓冲区可能太小,无法捕获所有调用堆栈。调用树中也显示了这种情况,会话设置提供了一种相对于默认大小增加缓冲区大小的方法。

请注意,Windows没有信号处理程序,也不支持这种数据收集。

2、本机采样已在macOSLinux上添加。使用上述新的异步采样模式时,可以选择启用本机采样。如果启用了本地采样,则JProfiler解析本地库中的符号,并将本地节点添加到调用树中。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

在本机调用树节点中,相关的本机库显示在方括号中,后跟函数名称。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

在类聚合模式下,本机库被分组在一起,而在包聚合级别中,所有本机调用都被累积。当删除部分调用树时,该库也像一个类,因此,通过删除所选节点的类(下面将介绍此版本中的新功能),整个本地库将从调用树中删除。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

3、JProfiler现在可以打开JDK飞行记录器(JFR)快照JFR快照通常记录在生产环境中,在该环境中,性能分析代理的安装受到限制。从此版本开始,您现在可以在分析这些快照时发挥JProfiler的全部分析功能。

视图选择器中的可用视图与常规JProfiler会话中的视图不同。JProfiler可以从JFR事件数据构造许多遥测视图,包括堆大小、记录的吞吐量、GC活动、类加载、线程计数和CPU负载。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

在内存部分中,将显示堆统计信息和分配记录。如果为JFR记录启用了堆统计信息,则“活动对象”视图将显示占用大部分堆的类。第一个和最后一个堆统计信息之间的差异显示在“差异”列中。

JFR快照中分配记录中的数据映射到“已记录对象”、“分配调用树”和“分配热点”视图。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

CPU”部分中,“调用树”、“热点”和“调用图”视图可用。JFR记录根据缓冲区大小截断跟踪,这些跟踪包含在单独的顶级节点中。

JFR记录仅以Java代码记录可运行的线程。由于JFR采样的性质,无法进行时间计算,并且仅显示事件计数。“等待”、“阻止”和“套接字与文件I/O”线程状态显示时间,因为它们是由定时事件组装而成的。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

JFR快照包含JProfiler用于构建线程历史视图的线程数据。包含的线程转储也显示在JProfiler中。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

JFR快照中的“等待”、“阻止”和“停车”事件显示在“监视器和锁”部分的“监视器历史记录”视图中。这些事件是CPU视图中“正在等待”和“已阻止”线程状态的来源。“监视器使用情况统计信息”视图也可用。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

最后,根据JFR事件构建了许多探针:“类”、“文件”、“套接字”和“异常”。这些视图根据是否记录了相应的JFR事件显示数据。在CPU视图中,“文件”和“套接字”探针也是“套接字和文件IO”线程状态的来源。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

4、新的异常值检测视图显示了方法的调用时间相对于其平均值如何变化。当将仪器用于方法调用记录且CPU记录处于活动状态时,此视图的数据始终可用。它代替了“方法统计”视图,该视图具有单独的记录,这增加了很多开销。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

离群系数量化最大调用时间偏离平均值多少。具有较高异常值系数的方法非常适合进行检查,它具有JProfiler中出色的方法运行记录功能,可在调用树中分别向您显示最慢的调用。同样,针对异常检测的时间测量是针对与选定方法运行记录相同的所选线程状态执行的。

从异常值检测视图中,您可以在上下文菜单中轻松选择一种方法作为例外方法。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

最大时间和调用计数的阈值限制了显示数据的数量,可以在视图设置中进行调整。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

5、跟踪异步调用现在适用于采样,包括新的异步采样模式。以前,您必须使用工具进行概要分析,才能使用“内联异步执行”调用树分析。必须更改分析模式才能获得内联的调用堆栈,这被证明是有限制的,特别是对于Kotlin协程来说,内联特别重要。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

6、现在,您可以在调用树中显示有助于所选调用堆栈的所有线程。当查看为所有线程累计的调用树时,知道哪个单个线程负责增加所选节点的时间可能会很有趣。上下文菜单使您可以访问此操作。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

您可以从线程列表中直接切换到调用树中的选定线程。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

7、整个类或包的调用树删除已实现。您可以通过选择一个节点并选择“删除选定的子树”操作来删除部分调用树。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

除了仅删除所选方法之外,您现在还可以选择删除所选类或所选包的所有调用。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

在某些情况下,您可能希望保留所选方法,而只是将其自拍时间设置为零。例如,对于Thread.run顶级方法可能就是这种情况,其中其大部分自用时间位于非概要分析类中,并且您希望概要分析代码的百分比总计为100%。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

8、遥测绘图已得到改进。缩小遥测技术后,它们现在将显示抖动图的最小和最大包络,而不是每个像素的内插平均值。同样,所有缩放级别的峰值都会保留。

JProfiler v 11.1 在macOS和Linux上添加了没有安全点偏差的异步采样模式

此外,您现在可以在macOS上使用CTRL +滚轮或捏合手势来进行放大和缩小,并且在更改缩放级别时,遥测技术将保留当前光标位置。

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年8月24日
下一篇 2020年8月24日

相关推荐

发表回复

登录后才能评论