- 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
getPlatformMXBean
orgetPlatformMXBeans
method and access the MXBean locally in the running virtual machine. - Construct an MXBean proxy instance that forwards the method calls to a given
MBeanServer
by calling thegetPlatformMXBean(MBeanServerConnection, Class)
orgetPlatformMXBeans(MBeanServerConnection, Class)
method. ThenewPlatformMXBeanProxy
method 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
MBeanServer
to access MXBeans locally or a specificMBeanServerConnection
to access MXBeans remotely. The attributes and operations of an MXBean use only JMX open types which include basic data types,CompositeData
, andTabularData
defined inOpenType
. The mapping is specified in the MXBean specification for details.
getPlatformManagementInterfaces
方法返回Java虚拟机中支持的所有管理接口,包括下表中列出的标准管理界面以及由JDK实现扩展的管理接口。Java虚拟机具有以下管理接口的单个实例:
Java虚拟机具有以下管理接口的零个或单个实例。
Management Interface ObjectName CompilationMXBean
java.lang:type=Compilation
Java虚拟机可能具有以下管理接口的一个或多个实例。
Management Interface ObjectName GarbageCollectorMXBean
java.lang:type=GarbageCollector
,name=
collector's nameMemoryManagerMXBean
java.lang:type=MemoryManager
,name=
manager's nameMemoryPoolMXBean
java.lang:type=MemoryPool
,name=
pool's nameBufferPoolMXBean
java.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 String
CLASS_LOADING_MXBEAN_NAME
字符串表示的ObjectName
为ClassLoadingMXBean
。static String
COMPILATION_MXBEAN_NAME
字符串表示的ObjectName
为CompilationMXBean
。static String
GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
域名和类型密钥属性在ObjectName
为GarbageCollectorMXBean
。static String
MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
域名和类型密钥属性在ObjectName
为MemoryManagerMXBean
。static String
MEMORY_MXBEAN_NAME
字符串表示的ObjectName
为MemoryMXBean
。static String
MEMORY_POOL_MXBEAN_DOMAIN_TYPE
域名和类型密钥属性在ObjectName
为MemoryPoolMXBean
。static String
OPERATING_SYSTEM_MXBEAN_NAME
字符串表示的ObjectName
为OperatingSystemMXBean
。static String
RUNTIME_MXBEAN_NAME
字符串表示的ObjectName
为RuntimeMXBean
。static String
THREAD_MXBEAN_NAME
ObjectName
字符串表示为ThreadMXBean
。
-
方法摘要
所有方法 静态方法 具体的方法 Modifier and Type 方法 描述 static ClassLoadingMXBean
getClassLoadingMXBean()
返回Java虚拟机的类加载系统的托管bean。static CompilationMXBean
getCompilationMXBean()
返回Java虚拟机编译系统的受管Bean。static List<GarbageCollectorMXBean>
getGarbageCollectorMXBeans()
返回Java虚拟机中的GarbageCollectorMXBean
对象的列表。static List<MemoryManagerMXBean>
getMemoryManagerMXBeans()
返回Java虚拟机中的MemoryManagerMXBean
对象的列表。static MemoryMXBean
getMemoryMXBean()
返回Java虚拟机的内存系统的托管bean。static List<MemoryPoolMXBean>
getMemoryPoolMXBeans()
返回Java虚拟机中的MemoryPoolMXBean
对象的列表。static OperatingSystemMXBean
getOperatingSystemMXBean()
返回运行Java虚拟机的操作系统的托管bean。static Set<Class<? extends PlatformManagedObject>>
getPlatformManagementInterfaces()
返回Class
对象的集合,子界面为PlatformManagedObject
,表示用于监视和管理Java平台的所有管理界面。static MBeanServer
getPlatformMBeanServer()
返回平台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 RuntimeMXBean
getRuntimeMXBean()
返回Java虚拟机的运行时系统的托管bean。static ThreadMXBean
getThreadMXBean()
返回Java虚拟机的线程系统的托管bean。static <T> T
newPlatformMXBeanProxy(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
-
-