遥测 (Telemetries)
分析的一个方面是监控随时间变化的标量测量,例如,使用的堆大小。 在JProfiler中,这样的图形被称为遥测。观察遥测可以让您更好地理解被分析 (profiled) 的软件, 允许您在不同测量之间关联重要事件,并可能在您注意到意外行为时提示您使用JProfiler中的其他视图进行更深入的分析。
标准遥测 (Standard telemetries)
在JProfiler UI的“遥测”部分,默认情况下会记录一些遥测。 对于交互会话,它们始终是启用的。某些遥测需要记录特殊类型的数据。 在这种情况下,遥测中将显示一个记录操作。
要在相同时间轴上比较多个遥测,概览会在彼此之上显示多个小规模遥测,并具有可配置的行高。 点击遥测标题会激活完整的遥测视图。概览中遥测的默认顺序可能不合适,例如,因为您希望将选定的遥测并排关联。 在这种情况下,您可以在概览中通过拖放重新排序它们。
完整视图显示当前值的图例,并可能具有比概览中可见的更多选项。 例如,“Memory”遥测允许您选择单个内存池。
JProfiler有大量的探针 (probes),记录JVM中的高级系统和重要框架的事件。
探针具有在相应探针视图中显示的遥测。要将这些遥测与系统遥测进行比较,您可以将选定的探针遥测添加到顶级遥测部分。
从工具栏中选择
每个添加的探针遥测在遥测部分都有自己的视图,并且也显示在概览中。
一旦添加了探针遥测,只有在记录了探针数据时才会显示数据。如果没有,遥测描述中包含一个内联按钮以开始记录。
探针遥测的上下文菜单包含记录操作以及显示相应探针视图的操作。
类似于探针视图,记录对象的VM遥测依赖于内存记录,并且也有一个记录按钮和类似的上下文菜单。
最后,还有“跟踪”遥测,用于监控在另一个视图中选择的标量值。 例如,类追踪器 (class tracker) 视图允许您选择一个类并监控其实例数量随时间的变化。 此外,每个探针都有一个“追踪器 (Tracker)”视图,其中监控选定的热点 (hot spots) 或控制对象 (control objects)。
书签 (Bookmarks)
JProfiler维护一个在所有遥测中显示的书签列表。在交互会话中,您可以通过点击添加书签 (Add Bookmark)工具栏按钮, 或使用上下文菜单中的在此添加书签 (Add Bookmark Here)功能,在当前时间添加书签。
书签不仅可以手动创建,它们还会由记录操作自动添加,以指示特定记录的开始和结束。 通过触发器 (trigger) 操作或控制器API,您可以以编程方式添加书签。
书签具有颜色、线条样式以及在工具提示中显示的名称。您可以编辑现有书签并更改这些属性。
如果在遥测中右键点击多个书签太不方便,您可以使用菜单中的分析 (Profiling)→编辑书签 (Edit Bookmarks)操作获取书签列表。 这也是您可以将书签导出为HTML或CSV的地方。
自定义遥测 (Custom telemetries)
有两种方法可以添加您自己的遥测:要么在JProfiler UI中编写脚本以提供数值,要么选择一个数值的MBean属性。
要添加自定义遥测,请点击“遥测”部分中可见的配置遥测 (Configure Telemetries)工具栏按钮。 在脚本遥测中,您可以访问当前JProfiler会话的类路径中配置的所有类。 如果值不能直接获得,请向您的应用程序添加一个静态方法,您可以在此脚本中调用。
上面的示例显示了对平台MBean的调用。绘制MBean的标量值更方便地通过MBean遥测完成。 在这里,MBean浏览器允许您选择合适的属性。属性值必须是数值。
您可以将多个遥测线捆绑成一个遥测。这就是为什么配置分为两部分:遥测本身和遥测线。 在遥测线中,您只需编辑数据源和线条标题,在遥测中,您可以配置单位、比例和堆叠,这些适用于所有包含的线条。
在堆叠遥测中,单个遥测线是累加的,并且可以显示区域图。比例因子用于将值转换为支持的单位。 例如,如果数据源报告kB,问题是JProfiler中没有匹配的“kB”单位。 如果将比例因子设置为-3,值将被转换为字节,并通过选择“字节 (bytes)”作为遥测的单位,JProfiler将自动在遥测中显示适当的聚合单位。
自定义遥测按配置顺序添加到“遥测”部分的末尾。要重新排序它们,请在概览中将它们拖动到所需位置。
开销考虑 (Overhead considerations)
乍一看,似乎遥测会随着时间线性消耗内存。然而,JProfiler会合并较旧的值,并使它们逐渐变得更粗粒度,以限制每个遥测消耗的总内存量。
遥测的CPU开销受到限制,因为它们的值每秒只轮询一次。 对于标准遥测,此数据收集没有额外的开销。 对于自定义遥测,开销由底层脚本或MBean决定。