JProfiler帮助文档

MBean 浏览器 (MBean browser)

许多应用服务器和框架(例如 Apache Camel)使用 JMX 公开若干 MBean 用于配置和 monitor 目的。JVM 本身也发布了若干 平台 MXBean (platform MXBeans),展示了有关 JVM 底层操作的重要信息。

JProfiler 包含一个 MBean 浏览器,用于显示被分析 (profiled) VM 中所有已注册的 MBean。无需使用 JMX 的远程 (remote) 管理级别来访问 MBean 服务器,因为 JProfiler agent 已经在进程内运行,并有权访问所有已注册的 MBean 服务器。

JProfiler 支持 Open MBean 的类型系统。除了定义若干简单类型外,Open MBean 还可以定义不涉及自定义类的复杂数据类型。此外,数组和表格也可作为数据结构使用。通过 MXBean,JMX 提供了一种从 Java 类自动创建 Open MBean 的简便方法。例如,JVM 提供的 MBean 就是 MXBean。

虽然 MBean 没有层次结构,但 JProfiler 通过将第一个冒号之前的对象域名作为第一个树级别,并将所有属性作为递归嵌套级别,将它们组织成树状结构。属性值首先显示,属性键在末尾用方括号括起。type 属性经过优先处理,直接显示在顶级节点 (node) 下方。

属性 (Attributes)

在显示 MBean 内容的树表中,您可以在顶层看到 MBean 属性。

以下数据结构显示为嵌套行:

  • 数组 (Arrays)
    基本类型数组和对象数组的元素在嵌套行中显示,并将索引作为键名。
  • 复合数据 (Composite data)
    复合数据类型中的所有项均显示为嵌套行。每个项都可以是任意类型,因此嵌套可以持续到任意深度。
  • 表格数据 (Tabular data)
    在 MXBean 中,您最常遇到的表格数据是将 java.util.Map 实例映射到具有一个键列和一个值列的表格数据类型。如果键的类型是简单类型,则该 Map 将“内联 (inline)”显示,并且每个键值对都显示为一个嵌套行。如果键具有复杂类型,则会插入一层包含嵌套键和值条目的“map entry”元素。对于具有复合键和多个值的通用表格类型也是如此。

可选地,MBean 属性可以是可编辑的,在这种情况下,其值旁边将显示一个  编辑图标,并且 Edit Attribute Value 操作变为可用。复合和表格类型不能在 MBean 浏览器中编辑,但数组或简单类型是可编辑的。

如果值可为 null(例如数组),则编辑器会提供一个复选框来选择 null 状态。

数组元素之间用分号分隔。末尾的一个分号可以忽略,因此 1 和 1; 是等效的。分号前面缺失的值对于对象数组将被视为 null 值。对于字符串数组,可以使用双引号 ("") 创建空元素,并通过用引号括起整个元素来创建包含分号的元素。字符串元素中的双引号必须成对出现(双重双引号)。例如,输入字符串数组值:

"Test";"";;"embedded "" quote";"A;B";;

将创建字符串数组

new String[] {"Test", "", null, "embedded \" quote", "A;B", null}

JProfiler 可以根据数字 MBean 属性值创建自定义遥测 (telemetry)。当您为自定义遥测 定义 MBean 遥测行时,将显示一个 MBean 属性浏览器,让您可以选择提供遥测数据的数据属性。当您已在 MBean 浏览器中工作时,上下文菜单中的 Add Telemetry For Value 操作提供了一种创建新自定义遥测的便捷方式。

遥测还可以跟踪复合数据或具有简单键和单个值的表格数据中的嵌套值。当您选择嵌套行时,将构建一个值路径,其中路径组件用正斜杠分隔。

操作 (Operations)

除了检查和修改 MBean 属性之外,您还可以调用 MBean 操作并检查它们的返回值。MBean 操作是 MBean 接口上非 setter 或 getter 的方法。

操作的返回值可能具有复合类型、表格类型或数组类型,因此会显示一个新窗口,其内容类似于 MBean 属性树表。对于简单返回类型,只有一行名为“Return value”。对于其他类型,“Return value”是添加结果的根元素。

MBean 操作可以有一个或多个参数。在输入它们时,适用的规则和限制与编辑 MBean 属性时相同。

MBean 快照 (MBean snapshots)

除了查看 MBean 的实时值之外,您还可以对它们的当前状态拍摄快照。每个新快照都将作为单独的视图 (view) 添加到 MBean 视图部分中,并且可以为其分配自定义标签。拍摄快照时,仅包含根据当前过滤器显示的那些 MBean。通过这种方式,您可以专注于特定的 MBean,并减少查询与您的目的无关的 MBean 的开销。

在 JProfiler UI 中保存快照时,所有 MBean 快照也会一并保存,而实时 MBean 视图 (view) 则不会被保存。对于 离线分析 (offline profiling),您可以使用 Controller API 或“Trigger MBean snapshot”触发器 (trigger) 操作以编程方式拍摄 MBean 快照。

Controller API 和触发器操作都支持在视图选择器中显示的可选标签,以及用于过滤所包含 MBean 的可选正则表达式。