Module jdk.management

Interface DiagnosticCommandMBean

所有超级接口:
DynamicMBean

public interface DiagnosticCommandMBean extends DynamicMBean
用于HotSpot虚拟机诊断命令的管理接口。

DiagnosticCommandMBean被注册到平台MBeanServer,就像其他平台MBeans一样。

用于在MBeanServer中唯一标识诊断MBean的ObjectName是:

com.sun.management:type=DiagnosticCommand

此MBean是一个DynamicMBean,也是一个NotificationEmitterDiagnosticCommandMBean在运行时生成,并在Java虚拟机的生命周期内可能会被修改。一个诊断命令被表示为DiagnosticCommandMBean接口的操作。每个诊断命令包括:

  • 诊断命令名称,即在HotSpot虚拟机中引用的名称
  • MBean操作名称,即为诊断命令操作调用生成的名称。 MBean操作名称是依赖于实现的
将诊断命令名称转换为MBean操作名称的推荐方法如下:
  • 从第一个字符到第一个点之间的所有字符都设置为小写字符
  • 删除每个点或下划线字符,并将下一个字符设置为大写字符
  • 所有其他字符都不做修改

诊断命令名称始终在名为dcmd.name的字段中提供操作的元数据(见下文)。

诊断命令可能支持选项或参数,也可能不支持。所有操作都返回String,对于不支持任何选项或参数的操作,不需要参数,对于支持至少一个选项或参数的操作,需要一个String[]参数。每个选项或参数必须存储在单个String中。不支持跨多个String实例拆分的选项或参数。

选项和参数之间的区别: 选项由选项名称标识,而参数由它们在命令行中的位置标识。选项和参数按照传递给调用方法的数组的顺序进行处理。

与动态MBean的任何操作一样,这些操作都由MBeanOperationInfo实例描述。以下是此对象返回的值:

Descriptor是包含JMX元素的附加元数据的字段集合。一个字段是一个名称和一个关联的值。为与诊断命令关联的操作提供的附加元数据在下表中描述:

描述
名称 类型 描述
dcmd.name String 原始诊断命令名称(而非操作名称)
dcmd.description String 诊断命令描述
dcmd.help String 此诊断命令的完整帮助消息(与“help”命令生成的消息相同)
dcmd.vmImpact String 诊断命令的影响,此值与诊断命令的帮助消息中“impact”部分中打印的值相同,与MBeanOperationInfo的getImpact()不同
dcmd.enabled boolean 如果诊断命令已启用,则为true,否则为false
dcmd.permissionClass String 某些诊断命令可能需要特定权限才能执行,除了调用其关联MBean操作的MBeanPermission之外。此字段返回权限类的完全限定名称,如果不需要权限,则返回null
dcmd.permissionName String 执行此诊断命令所需权限的第一个参数,如果不需要权限,则返回null
dcmd.permissionAction String 执行此诊断命令所需权限的第二个参数,如果权限构造函数只有一个参数(例如ManagementPermission)或不需要权限,则返回null
dcmd.arguments Descriptor 包含诊断命令支持的选项和参数描述的Descriptor实例(见下文)

诊断命令的参数(选项或参数)描述在Descriptor实例中提供。在此Descriptor中,每个字段名称都是参数名称,每个字段值本身是一个Descriptor实例。在此第二个Descriptor实例中提供的字段在下表中描述:

描述
名称 类型 描述
dcmd.arg.name String 参数名称
dcmd.arg.type String 参数类型。返回的String是诊断命令解析器识别的类型名称。这些类型不是Java类型,而是依赖于实现。
dcmd.arg.description String 参数描述
dcmd.arg.isMandatory boolean 如果参数是必需的,则为true,否则为false
dcmd.arg.isOption boolean 如果参数是选项,则为true,如果是参数,则为false
dcmd.arg.isMultiple boolean 如果参数可以多次指定,则为true,否则为false

当Java虚拟机当前支持的诊断命令集发生更改时,DiagnosticCommandMBean会发出一个Notification,其类型 "jmx.mbean.info.changed"userData是新的MBeanInfo

自Java版本:
1.8