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

























