JFR事件浏览器
事件浏览器显示在JFR快照中记录的所有数据。
JFR将事件类型组织成层次结构类别,构成事件浏览器左侧的树。您可以选择单个事件类型来显示记录的事件。默认情况下,JProfiler显示所有注册的事件类型,即使没有为它们记录事件。或者,您可以选择在视图设置对话框中隐藏空事件类别。
JFR事件
事件显示为主表中的行,列取决于事件类型树中的选择。
表中的事件默认按时间顺序排序。为了避免UI过载,表中仅显示前10000个事件。底部的分析始终从所有事件中计算。如果您设置了过滤器,它也会检查所有事件,而不仅仅是前10000个。这意味着在设置过滤器时,可能会在表中显示先前未显示的事件。
您还可以选择多个事件类型或整个类别。在这种情况下,表中显示所有选定事件的并集。由于每种事件类型都有自己的列集,因此仅包含所有选定事件类型共有的列。
可用分析的数量也可能减少,因为分析视图是基于可用列添加的。
列宽根据实际内容自动调整,直到您调整列的大小。然后,具有相同内容类型的列宽将固定为您的选择,并且不再自动更改,直到您在视图设置对话框中清除列宽。具有时间或内存等单位的列中的比例也会为每个单元格自动计算。如果您希望固定列的比例以便更好地进行比较,视图设置对话框为每个这样的列提供了一个选项。在这种情况下,设置会为每个选定的事件类型单独保存。
有几种方法可以过滤事件。在表的顶部,有一个过滤器选择器,允许您在所有文本列中进行过滤,或者选择单个列并配置与列类型匹配的过滤器。
另一种过滤方法是选择感兴趣的行,并使用上下文菜单选择基于所选行中值的特定过滤器。顶部的过滤器选择器将进行调整,以显示您的选择。您现在可以选择另一个值并再次添加过滤器,它将替换同一列的先前过滤器。一般来说,每种过滤器类型只能存在一次,再次设置相同的过滤器将替换先前的过滤器。
调用栈
在JProfiler中,所选事件的调用栈在事件表下方的“选择”选项卡中可见。
如果选择多个事件,选择选项卡会更改为一个视图,显示您选择的事件的调用栈计算出的热点或累积调用树。
默认情况下,事件计数决定了调用树和热点视图中节点的百分比。一些事件类型包括其他适合此目的的测量,例如持续时间或分配的内存。如果有这样的测量,您可以从选择选项卡中的第二个下拉菜单中选择它们作为热点类型。
下方分割窗格中的“热点”和“调用树”视图包含相同的视图,但它们是为快照中的所有事件计算的。与选择选项卡类似,它们也有一个“热点类型”下拉菜单。除了显示所有事件,您还可以从这些视图中选择一个过滤器。在调用树视图中,选择特定的调用栈并单击过滤选定项按钮将仅在上表中显示具有该调用栈的事件。对于热点视图,您可以选择顶级热点或回溯中的任何节点,以便仅显示调用栈以选定节点为结束的事件。
在上面的截图中,您可以看到回溯中的一个节点被选为过滤节点。除了常规的调用树图标外,它还包括一个复选标记。您可以通过顶部的标签或移除过滤器按钮移除过滤器。表中的事件计数等于所选节点上的数字。热点树仍然显示所有事件,而不包括在热点视图中设置的过滤器。
这是从分析视图中设置的过滤器的一般特性:分析视图本身是从所有过滤事件中计算的,但不包括在分析视图中设置的过滤器。这使得分析视图更有用,因为您可以看到您在此处选择的总事件集的哪一部分。
时间线视图
所有JFR事件都有相关的时间,因此每种事件类型或事件类型集都有一个时间线视图,显示事件的时间分布。
要专注于特定的时间范围,您可以沿时间轴拖动。在上面的示例中,我们现在有两个过滤器:一个来自热点回溯的过滤器和一个来自时间线视图的过滤器。同样,时间线视图继续显示整个时间范围,而其他分析视图现在只显示选定时间范围内的事件。
默认显示模式是对数,因此低事件计数的区域仍然可见于高事件计数的区域。您可以通过取消选择时间线下方的log按钮切换到线性模式。默认情况下,整个时间范围显示在可用宽度中,但您可以切换到可变时间范围,并像在JProfiler中的其他遥测中一样进行缩放和滚动。还提供了书签,您可以在选定的时间范围内添加垂直标记。这样,您可以跨不同的事件类型比较时间点。
直方图视图
所有可以为多个事件求和的测量,例如持续时间和分配大小,都以特殊方式处理:首先,事件表中这些测量的列在底部有一个总值。其次,调用树和热点分析视图提供一个“热点类型”下拉菜单,以这些测量而不是事件计数来计算它们的树。最后,对于每个这样的测量,直方图分析被添加到下方的分割面板中。
直方图在其垂直轴上显示事件计数,而水平轴显示选定的测量,并分为若干个箱,以便可以计算分布。箱的大小和事件计数可以从工具提示中获得。
上面的截图显示了如何在直方图中设置过滤器。就像其他分析视图一样,过滤器仅适用于其他分析视图,而整个直方图仍然显示。对于时间线视图,直方图默认具有对数垂直轴。在这里,截图中选定的事件在使用线性轴时将不可见。