MBean 浏览器
许多应用服务器和框架,如 Apache Camel 使用 JMX 来公开 一些 MBeans 以进行配置和监控。JVM 本身也发布了一些 平台 MXBeans ,它们提供了有关 JVM 低级操作的有趣信息。
JProfiler 包含一个 MBean 浏览器,显示被分析 VM 中所有注册的 MBeans。访问 MBean 服务器的 JMX 远程管理 级别不是必需的,因为 JProfiler 代理已经在进程中运行,并且可以访问所有注册的 MBean 服务器。
JProfiler 支持 Open MBeans 的类型系统。除了定义一些简单类型之外, Open MBeans 可以定义不涉及自定义类的复杂数据类型。此外,数组和表格 作为数据结构是可用的。使用 MXBeans,JMX 提供了一种从 Java 类自动创建 Open MBeans 的简便方法。 例如,JVM 提供的 MBeans 是 MXBeans。
虽然 MBeans 没有层次结构,但 JProfiler 通过将对象域名直到第一个冒号作为第一级树节点,
并使用所有属性作为递归嵌套级别来将它们组织成树。属性值首先显示,属性键在括号中显示在末尾。
type
属性优先显示在顶级节点下方。
属性
在显示 MBean 内容的树表的顶层,您可以看到 MBean 属性。
以下数据结构显示为嵌套行:
Arrays
原始数组和对象数组的元素显示在嵌套行中,索引作为键名。Composite data
复合数据类型中的所有项目显示为嵌套行。每个项目可以是任意类型,因此嵌套可以继续到任意深度。Tabular data
在 MXBeans 中,您最常遇到的是将java.util.Map
实例映射到具有一个键列和一个值列的表格数据类型。 如果键的类型是简单类型,则地图显示为“内联”,每个键值对显示为嵌套行。如果键具有复杂类型, 则插入一个包含嵌套键和值条目的“map entry”元素级别。这也是一般表格类型的情况,具有复合键和多个值。
可选地,MBean 属性可以是可编辑的,在这种情况下,
如果值是可为空的,例如数组,编辑器有一个复选框来选择空状态。
数组元素用分号分隔。可以忽略一个尾随分号,因此
1
和 1;
是等效的。分号前缺少的值将被视为对象数组的空值。对于字符串数组,
您可以使用双引号 ("") 创建空元素,并通过引用整个元素来包含分号的元素。字符串元素中的双引号必须加倍。
例如,输入字符串数组值
"Test";"";;"embedded "" quote";"A;B";;
创建字符串数组
new String[] {"Test", "", null, "embedded \" quote", "A;B", null}
JProfiler 可以从数值 MBean 属性值创建自定义遥测。当您 定义 MBean 遥测线 以获取自定义遥测时,将显示一个 MBean 属性 浏览器,允许您选择提供遥测数据的属性。当您已经在 MBean 浏览器中工作时,为值添加遥测 操作 在上下文菜单中提供了一种方便的方法来创建新的自定义遥测。
遥测还可以跟踪复合数据或具有简单键和单个值的表格数据中的嵌套值。 当您选择嵌套行时,将构建一个值路径,其中路径组件由正斜杠分隔。
操作
除了检查和修改 MBean 属性之外,您还可以调用 MBean 操作并检查其返回值。MBean 操作是 MBean 接口上的方法, 不是设置器或获取器。
操作的返回值可能具有复合、表格或数组类型,因此显示一个内容类似于 MBean 属性树表的新窗口。 对于简单返回类型,只有一个名为“返回值”的行。对于其他类型,“返回值”是根元素,结果被添加到其中。
MBean 操作可以有一个或多个参数。当您输入它们时,适用与编辑 MBean 属性时相同的规则和限制。
MBean 快照
除了查看 MBeans 的实时值之外,您还可以拍摄其当前状态的快照。每个新快照 将作为 MBean 视图部分中的单独视图添加,并可以分配自定义标签。拍摄快照时, 仅根据当前过滤器显示的那些 MBeans 会被包含。通过这种方式,您可以专注于 特定的 MBeans 并减少查询与您的目的无关的 MBeans 的开销。
在 JProfiler UI 中保存快照时,所有 MBean 快照也会被保存,而实时 MBean 视图不会 被保存。对于 离线分析,您可以使用 Controller API 或“保存 MBean 快照” 触发器操作以编程方式拍摄 MBean 快照。
控制器 API 和触发器操作都支持在视图选择器中显示的可选标签以及 用于过滤包含的 MBeans 的可选正则表达式。