- java.lang.Object
-
- java.lang.management.ManagementFactory
-
public class ManagementFactory extends Object
ManagementFactory类是用于获取Java平台的受管Bean的工厂类。 该类由静态方法组成,每个方法返回一个或多个表示Java虚拟机组件的管理接口的平台MXBeans 。Platform MXBeans
平台MXBean是符合JMX仪器规范的托管bean ,仅使用一组基本数据类型。 JMX管理应用程序和platform MBeanServer可以互操作,而不需要MXBean特定数据类型的类。 在JMX连接器服务器和连接器客户端之间传输的数据类型是open types ,这允许跨版本进行互操作。 详见the specification of MXBeans 。
每个平台MXBean是一个
PlatformManagedObject,它有一个独特的ObjectName注册在平台MBeanServer由getObjectName方法返回。应用程序可以通过以下方式访问平台MXBean:
1.直接访问MXBean界面
- Get an MXBean instance by calling the
getPlatformMXBeanorgetPlatformMXBeansmethod and access the MXBean locally in the running virtual machine. - Construct an MXBean proxy instance that forwards the method calls to a given
MBeanServerby calling thegetPlatformMXBean(MBeanServerConnection, Class)orgetPlatformMXBeans(MBeanServerConnection, Class)method. ThenewPlatformMXBeanProxymethod can also be used to construct an MXBean proxy instance of a givenObjectName. A proxy is typically constructed to remotely access an MXBean of another running virtual machine.
2. Indirect access to an MXBean interface via MBeanServer
- Go through the platform
MBeanServerto access MXBeans locally or a specificMBeanServerConnectionto access MXBeans remotely. The attributes and operations of an MXBean use only JMX open types which include basic data types,CompositeData, andTabularDatadefined inOpenType. The mapping is specified in the MXBean specification for details.
getPlatformManagementInterfaces方法返回Java虚拟机中支持的所有管理接口,包括下表中列出的标准管理界面以及由JDK实现扩展的管理接口。Java虚拟机具有以下管理接口的单个实例:
Java虚拟机具有以下管理接口的零个或单个实例。
Management Interface ObjectName CompilationMXBeanjava.lang:type=CompilationJava虚拟机可能具有以下管理接口的一个或多个实例。
Management Interface ObjectName GarbageCollectorMXBeanjava.lang:type=GarbageCollector,name=collector's nameMemoryManagerMXBeanjava.lang:type=MemoryManager,name=manager's nameMemoryPoolMXBeanjava.lang:type=MemoryPool,name=pool's nameBufferPoolMXBeanjava.nio:type=BufferPool,name=pool name- 从以下版本开始:
- 1.5
- 另请参见:
-
JMX Specification , Ways to Access Management Metrics ,
MXBean
- Get an MXBean instance by calling the
-
-
Field Summary
Fields Modifier and Type Field 描述 static StringCLASS_LOADING_MXBEAN_NAME字符串表示的ObjectName为ClassLoadingMXBean。static StringCOMPILATION_MXBEAN_NAME字符串表示的ObjectName为CompilationMXBean。static StringGARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE域名和类型密钥属性在ObjectName为GarbageCollectorMXBean。static StringMEMORY_MANAGER_MXBEAN_DOMAIN_TYPE域名和类型密钥属性在ObjectName为MemoryManagerMXBean。static StringMEMORY_MXBEAN_NAME字符串表示的ObjectName为MemoryMXBean。static StringMEMORY_POOL_MXBEAN_DOMAIN_TYPE域名和类型密钥属性在ObjectName为MemoryPoolMXBean。static StringOPERATING_SYSTEM_MXBEAN_NAME字符串表示的ObjectName为OperatingSystemMXBean。static StringRUNTIME_MXBEAN_NAME字符串表示的ObjectName为RuntimeMXBean。static StringTHREAD_MXBEAN_NAMEObjectName字符串表示为ThreadMXBean。
-
方法摘要
所有方法 静态方法 具体的方法 Modifier and Type 方法 描述 static ClassLoadingMXBeangetClassLoadingMXBean()返回Java虚拟机的类加载系统的托管bean。static CompilationMXBeangetCompilationMXBean()返回Java虚拟机编译系统的受管Bean。static List<GarbageCollectorMXBean>getGarbageCollectorMXBeans()返回Java虚拟机中的GarbageCollectorMXBean对象的列表。static List<MemoryManagerMXBean>getMemoryManagerMXBeans()返回Java虚拟机中的MemoryManagerMXBean对象的列表。static MemoryMXBeangetMemoryMXBean()返回Java虚拟机的内存系统的托管bean。static List<MemoryPoolMXBean>getMemoryPoolMXBeans()返回Java虚拟机中的MemoryPoolMXBean对象的列表。static OperatingSystemMXBeangetOperatingSystemMXBean()返回运行Java虚拟机的操作系统的托管bean。static Set<Class<? extends PlatformManagedObject>>getPlatformManagementInterfaces()返回Class对象的集合,子界面为PlatformManagedObject,表示用于监视和管理Java平台的所有管理界面。static MBeanServergetPlatformMBeanServer()返回平台MBeanServer。static <T extends PlatformManagedObject>
TgetPlatformMXBean(Class<T> mxbeanInterface)返回实现给定的mxbeanInterface的平台MXBean,该mxbeanInterface被指定为在Java虚拟机中具有一个实例。static <T extends PlatformManagedObject>
TgetPlatformMXBean(MBeanServerConnection connection, Class<T> mxbeanInterface)返回mxbeanInterface的平台MXBean代理,该代理被指定为在Java虚拟机中具有一个实例,代理将通过给定的MBeanServerConnection转发方法调用。static <T extends PlatformManagedObject>
List<T>getPlatformMXBeans(Class<T> mxbeanInterface)返回在Java虚拟机中实现给定的mxbeanInterface的平台mxbeanInterface的列表。static <T extends PlatformManagedObject>
List<T>getPlatformMXBeans(MBeanServerConnection connection, Class<T> mxbeanInterface)返回平台MXBean代理的列表,用于通过给定的MBeanServerConnection转发mxbeanInterface的方法调用。static RuntimeMXBeangetRuntimeMXBean()返回Java虚拟机的运行时系统的托管bean。static ThreadMXBeangetThreadMXBean()返回Java虚拟机的线程系统的托管bean。static <T> TnewPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface)返回给定的平台MXBean接口的代理 MXBean name转发其方法调用通过给定MBeanServerConnection。
-
-
-
字段详细信息
-
CLASS_LOADING_MXBEAN_NAME
public static final String CLASS_LOADING_MXBEAN_NAME
ObjectName字符串表示为ClassLoadingMXBean。- 另请参见:
- Constant Field Values
-
COMPILATION_MXBEAN_NAME
public static final String COMPILATION_MXBEAN_NAME
字符串表示的ObjectName为CompilationMXBean。- 另请参见:
- Constant Field Values
-
MEMORY_MXBEAN_NAME
public static final String MEMORY_MXBEAN_NAME
字符串表示的ObjectName为MemoryMXBean。- 另请参见:
- Constant Field Values
-
OPERATING_SYSTEM_MXBEAN_NAME
public static final String OPERATING_SYSTEM_MXBEAN_NAME
字符串表示的ObjectName为OperatingSystemMXBean。- 另请参见:
- Constant Field Values
-
RUNTIME_MXBEAN_NAME
public static final String RUNTIME_MXBEAN_NAME
字符串表示的ObjectName为RuntimeMXBean。- 另请参见:
- Constant Field Values
-
THREAD_MXBEAN_NAME
public static final String THREAD_MXBEAN_NAME
字符串表示的ObjectName为ThreadMXBean。- 另请参见:
- Constant Field Values
-
GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
public static final String GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
ObjectName的域名和类型密钥属性为GarbageCollectorMXBean。 可以通过将此字符串附加到“,name=收藏家的名称 ”来形成GarbageCollectorMXBean的独特ObjectName。- 另请参见:
- Constant Field Values
-
MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
public static final String MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
域名和类型密钥属性在ObjectName为MemoryManagerMXBean。ObjectName的MemoryManagerMXBean可以通过将此字符串附加到“,name=经理的名字 ”来形成。- 另请参见:
- Constant Field Values
-
MEMORY_POOL_MXBEAN_DOMAIN_TYPE
public static final String MEMORY_POOL_MXBEAN_DOMAIN_TYPE
该域名和类型密钥属性在ObjectName为MemoryPoolMXBean。ObjectName的MemoryPoolMXBean可以通过将这个字符串追加到,name=池的名字来形成。- 另请参见:
- Constant Field Values
-
-
方法详细信息
-
getClassLoadingMXBean
public static ClassLoadingMXBean getClassLoadingMXBean()
返回Java虚拟机的类加载系统的托管bean。- 结果
-
一个用于Java虚拟机的
ClassLoadingMXBean对象。
-
getMemoryMXBean
public static MemoryMXBean getMemoryMXBean()
返回Java虚拟机的内存系统的托管bean。- 结果
-
一个用于Java虚拟机的
MemoryMXBean对象。
-
getThreadMXBean
public static ThreadMXBean getThreadMXBean()
返回Java虚拟机的线程系统的托管bean。- 结果
-
一个用于Java虚拟机的
ThreadMXBean对象。
-
getRuntimeMXBean
public static RuntimeMXBean getRuntimeMXBean()
返回Java虚拟机的运行时系统的托管bean。- 结果
-
一个用于Java虚拟机的
RuntimeMXBean对象。
-
getCompilationMXBean
public static CompilationMXBean getCompilationMXBean()
返回Java虚拟机编译系统的受管Bean。 如果Java虚拟机没有编译系统,此方法返回null。- 结果
-
一个用于Java虚拟机的
CompilationMXBean对象,如果Java虚拟机没有编译系统,null。
-
getOperatingSystemMXBean
public static OperatingSystemMXBean getOperatingSystemMXBean()
返回运行Java虚拟机的操作系统的托管bean。- 结果
-
一个用于Java虚拟机的
OperatingSystemMXBean对象。
-
getMemoryPoolMXBeans
public static List<MemoryPoolMXBean> getMemoryPoolMXBeans()
- 结果
-
一个
MemoryPoolMXBean对象的列表。
-
getMemoryManagerMXBeans
public static List<MemoryManagerMXBean> getMemoryManagerMXBeans()
- 结果
-
一个
MemoryManagerMXBean对象的列表。
-
getGarbageCollectorMXBeans
public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans()
返回Java虚拟机中的GarbageCollectorMXBean个对象的列表。 Java虚拟机可能具有一个或多个GarbageCollectorMXBean对象。 它可能在执行期间添加或删除GarbageCollectorMXBean。- 结果
-
GarbageCollectorMXBean对象的列表。
-
getPlatformMBeanServer
public static MBeanServer getPlatformMBeanServer()
返回平台MBeanServer。 在第一次调用此方法时,首先通过调用270535983103959方法创建平台MBeanServer,并在其平台MBeanServer注册了每个平台MXBeanMBeanServer及其ObjectName。 此方法在后续调用中将简单地返回最初创建的平台MBeanServer。动态创建和销毁的MXBeans (例如,内存
pools和managers)将自动注册并注销到平台MBeanServer。如果设置了系统属性
javax.management.builder.initial,则平台MBeanServer创建将由指定的MBeanServerBuilder完成 。建议该平台MBeanServer也可用于注册除平台MXBeans之外的其他应用程序托管bean。 这将允许所有MBean通过相同的
MBeanServer,从而允许更容易的网络发布和发现。 应避免与平台MXBeans的名称冲突。- 结果
-
平台
MBeanServer; 平台MBeanServer在第一次调用此方法时被注册到平台MBeanServer中。 - 异常
-
SecurityException- 如果有安全管理员,并且呼叫者没有MBeanServerFactory.createMBeanServer()所要求的权限。 - 另请参见:
-
MBeanServerFactory,MBeanServerFactory.createMBeanServer()
-
newPlatformMXBeanProxy
public static <T> T newPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface) throws IOException
返回给定的平台MXBean接口的代理MXBean name转发其方法调用通过给定MBeanServerConnection。此方法相当于:
其中Proxy.newProxyInstance(mxbeanInterface.getClassLoader(), new Class[] { mxbeanInterface }, handler)handler是一个InvocationHandler,调用MXBean接口的方法调用。handler将MXBean数据类型的输入参数转换为映射的打开类型,然后转发到MBeanServer,并将来自MXBean方法调用的返回值通过MBeanServer从打开类型转换为在MXBean接口中声明的相应返回类型。如果MXBean是通知发布者(即实现
NotificationEmitter),则此代理将实现mxbeanInterface和NotificationEmitter。笔记:
- 使用MXBean代理可以方便地远程访问正在运行的虚拟机的MXBean平台。 对MXBean代理的所有方法调用将转发到
MBeanServerConnection,当连接器服务器发生通信问题时,可能会抛出IOException。 如果抛出,IOException将被包装在UndeclaredThrowableException。 使用代理远程访问平台UndeclaredThrowableException的应用程序应准备捕获UndeclaredThrowableException并处理其cause ,就像该原因是由MBeanServerConnection接口抛出的。 - 当客户端应用程序被设计为远程访问版本与应用程序运行版本不同的正在运行的虚拟机的MXBeans时 ,应准备捕获
InvalidObjectException,当MXBean代理接收到枚举常量的名称时,在客户端应用程序中加载的枚举类中缺少。 如果抛出,InvalidObjectException将被包装在UndeclaredThrowableException。 -
MBeanServerInvocationHandler或其newProxyInstance方法无法用于为平台MXBean创建代理。 由MBeanServerInvocationHandler创建的代理对象不处理MBeanServerInvocationHandler中描述的平台MXBeans的属性 。
- 参数类型
-
T- 一个mxbeanInterface类型的参数 - 参数
-
connection- 要转发的MBeanServerConnection。 -
mxbeanName- 要转发到connection内的平台MXBean的名称。mxbeanName必须格式为ObjectName。 -
mxbeanInterface- 要由代理实现的MXBean接口。 - 结果
-
给定的
MXBean name的平台MXBean接口的代理,通过给定的
MBeanServerConnection或null转发其方法调用(如果不存在)。 - 异常
-
IllegalArgumentException- 如果-
mxbeanName不具有有效的ObjectName格式,或 - 在
connection命名的MXBean不是由平台提供的MXBean,或者 - 该名称的MXBean未注册在
MBeanServerConnection或 - 命名的MXBean不是给定的
mxbeanInterface一个实例
-
-
IOException- 访问MBeanServerConnection时是否发生通信问题。
- 使用MXBean代理可以方便地远程访问正在运行的虚拟机的MXBean平台。 对MXBean代理的所有方法调用将转发到
-
getPlatformMXBean
public static <T extends PlatformManagedObject> T getPlatformMXBean(Class<T> mxbeanInterface)
返回实现给定的mxbeanInterface的平台MXBean,它被指定为在Java虚拟机中具有一个实例。 如果Java虚拟机中没有实现管理接口,则此方法可能返回null(例如,没有编译系统的Java虚拟机不实现CompilationMXBean); 否则,此方法相当于调用:getPlatformMXBeans(mxbeanInterface).get(0);- 参数类型
-
T- 一个mxbeanInterface类型的参数 - 参数
-
mxbeanInterface- 如果实现了Java虚拟机中具有一个实例的平台MXBean的管理界面。 - 结果
-
实现
mxbeanInterface的平台MXBean,如果不存在,null。 - 异常
-
IllegalArgumentException- 如果mxbeanInterface不是一个平台管理界面或不是一个单一平台MXBean。 - 从以下版本开始:
- 1.7
-
getPlatformMXBeans
public static <T extends PlatformManagedObject> List<T> getPlatformMXBeans(Class<T> mxbeanInterface)
返回在Java虚拟机中实现给定的mxbeanInterface的平台mxbeanInterface的列表。 返回的列表可能包含零个,一个或多个实例。 在给定的管理界面的规范中定义了返回列表中的实例数。 订单未定义,并且不保证返回的列表与以前的调用的顺序相同。- 参数类型
-
T- 一个mxbeanInterface类型的参数 - 参数
-
mxbeanInterface- 平台MXBean的管理界面 - 结果
-
实现
mxbeanInterface的平台mxbeanInterface列表。 - 异常
-
IllegalArgumentException- 如果mxbeanInterface不是平台管理界面。 - 从以下版本开始:
- 1.7
-
getPlatformMXBean
public static <T extends PlatformManagedObject> T getPlatformMXBean(MBeanServerConnection connection, Class<T> mxbeanInterface) throws IOException
返回mxbeanInterface的平台MXBean代理,该代理被指定为在Java虚拟机中具有一个实例,代理将通过给定的MBeanServerConnection转发方法调用。 如果在被监视的Java虚拟机中未实现管理接口,则此方法可能返回null(例如,没有编译系统的Java虚拟机不实现CompilationMXBean); 否则,此方法相当于调用:getPlatformMXBeans(connection, mxbeanInterface).get(0);- 参数类型
-
T- 一个mxbeanInterface类型的参数 - 参数
-
connection- 要转发的MBeanServerConnection。 -
mxbeanInterface- 如果已实施,将监视Java虚拟机中的一个实例的平台MXBean的管理界面。 - 结果
-
平台MXBean代理通过给定的
MBeanServerConnection或null转发mxbeanInterface的方法调用,如果不存在的话。 - 异常
-
IllegalArgumentException- 如果mxbeanInterface不是一个平台管理界面或不是一个单一平台的MXBean。 -
IOException- 访问MBeanServerConnection时是否发生通信问题。 - 从以下版本开始:
- 1.7
- 另请参见:
-
newPlatformMXBeanProxy(javax.management.MBeanServerConnection, java.lang.String, java.lang.Class<T>)
-
getPlatformMXBeans
public static <T extends PlatformManagedObject> List<T> getPlatformMXBeans(MBeanServerConnection connection, Class<T> mxbeanInterface) throws IOException
返回平台MXBean代理的列表,用于通过给定的MBeanServerConnection转发mxbeanInterface的方法调用。 返回的列表可能包含零个,一个或多个实例。 在给定的管理界面的规范中定义了返回列表中的实例数。 订单未定义,并且不保证返回的列表与以前的调用的顺序相同。- 参数类型
-
T- 一个mxbeanInterface型参数 - 参数
-
connection-MBeanServerConnection。 -
mxbeanInterface- 平台MXBean的管理界面 - 结果
-
通过给定的
MBeanServerConnection转发mxbeanInterface的方法调用的平台MXBean代理列表。 - 异常
-
IllegalArgumentException- 如果mxbeanInterface不是平台管理界面。 -
IOException- 如果在访问MBeanServerConnection时发生通信问题。 - 从以下版本开始:
- 1.7
- 另请参见:
-
newPlatformMXBeanProxy(javax.management.MBeanServerConnection, java.lang.String, java.lang.Class<T>)
-
getPlatformManagementInterfaces
public static Set<Class<? extends PlatformManagedObject>> getPlatformManagementInterfaces()
返回Class对象的集合,子界面为PlatformManagedObject,表示用于监视和管理Java平台的所有管理接口。- 结果
-
该组
Class对象,子界面PlatformManagedObject表示用于监视和管理Java平台的管理界面。 - 从以下版本开始:
- 1.7
-
-