java.lang.Object java.lang.management.ManagementFactory
public class ManagementFactory
ManagementFactory 类是一种工厂类,用于获取 Java 平台的管理 Bean。此类由静态方法组成,每种静态方法都会返回一个或多个表示 Java 虚拟机组件的管理接口的平台 MXBean。
应用程序可以采用以下方式访问平台 MXBean:
newPlatfromMXBeanProxy
将方法调用转发到给定的 MBeanServer
。构造代理通常是为了远程访问另一个正在运行的虚拟机的 MXBean。 平台 MBeanServer
本地访问 MXBean 或通过特定的 MBeanServerConnection 远程访问 MXBean。MXBean 的属性和操作仅使用 JMX 开放类型,包括在 OpenType
中定义的基本数据类型 CompositeData
和 TabularData
。映射关系在下面指定。 平台 MXBean 接口仅使用以下数据类型:
Integer
、Long
、Boolean
等等)和 String
Enum
类CompositeData
参数的静态 from 方法的类,以便将输入的 CompositeData 转换为该类的实例 List<E>
其中 E 为基本类型、包装类、枚举类或支持从 CompositeData 转换到此类的类 Map<K,V>
其中 K 和 V 为基本类型、包装类、枚举类或支持从 CompositeData 转换到此类的类 当通过 MBeanServer 访问平台 MXBean 的属性或操作时,将按以下方式对数据类型进行映射:
Enum
映射到 String(其值为枚举常数的名称)。 CompositeData
参数的 from 方法的类映射到 CompositeData
。 TabularData
,后者的行类型为 CompositeType
,此类型具有两个项,其名称分别为 "key" 和 "value",项类型分别为 K 和 V 对应的映射类型,"key" 为索引。 MBeanInfo
将属性和操作的数据类型描述为上述指定要映射到的基本类型或开放类型。
例如,MemoryMXBean
接口具有以下获取和设置方法:
MemoryMXBean 的 MBeanInfo 中的这些属性的名称和类型如下:public MemoryUsage getHeapMemoryUsage(); public boolean isVerbose(); public void setVerbose(boolean value);
属性名称 类型 HeapMemoryUsage CompositeData representing MemoryUsage
Verbose boolean
ObjectName
,以在平台
MBeanServer 中注册。Java 虚拟机具有以下管理接口的单一实例:
Java 虚拟机具有以下管理接口的零个或一个实例:
管理接口 对象名称 CompilationMXBean
java.lang:type=Compilation
Java 虚拟机可能具有以下管理接口的一个或多个实例。
管理接口 对象名称 GarbageCollectorMXBean
java.lang:type=GarbageCollector
,name=collector's nameMemoryManagerMXBean
java.lang:type=MemoryManager
,name=manager's nameMemoryPoolMXBean
java.lang:type=MemoryPool
,name=pool's name
LoggingMXBean
,
MXBean
字段摘要 | |
---|---|
static String |
CLASS_LOADING_MXBEAN_NAME ClassLoadingMXBean 的 ObjectName 的字符串表示形式。 |
static String |
COMPILATION_MXBEAN_NAME CompilationMXBean 的 ObjectName 的字符串表示形式。 |
static String |
GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE GarbageCollectorMXBean 的 ObjectName 中的域名和类型键属性。 |
static String |
MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE MemoryManagerMXBean 的 ObjectName 中的域名和类型键属性。 |
static String |
MEMORY_MXBEAN_NAME MemoryMXBean 的 ObjectName 的字符串表示形式。 |
static String |
MEMORY_POOL_MXBEAN_DOMAIN_TYPE MemoryPoolMXBean 的 ObjectName 中的域名和类型键属性。 |
static String |
OPERATING_SYSTEM_MXBEAN_NAME OperatingSystemMXBean 的 ObjectName 的字符串表示形式。 |
static String |
RUNTIME_MXBEAN_NAME RuntimeMXBean 的 ObjectName 的字符串表示形式。 |
static String |
THREAD_MXBEAN_NAME ThreadMXBean 的 ObjectName 的字符串表示形式。 |
方法摘要 | ||
---|---|---|
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 MBeanServer |
getPlatformMBeanServer() 返回平台 MBeanServer 。 |
|
static RuntimeMXBean |
getRuntimeMXBean() 返回 Java 虚拟机的运行时系统的管理 Bean。 |
|
static ThreadMXBean |
getThreadMXBean() 返回 Java 虚拟机的线程系统的管理 Bean。 |
|
static
|
newPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface) 返回用于给定 MXBean 名称的平台 MXBean 接口的代理,以便通过给定 MBeanServerConnection 转发其方法调用。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
public static final String CLASS_LOADING_MXBEAN_NAME
ClassLoadingMXBean
的
ObjectName 的字符串表示形式。
public static final String COMPILATION_MXBEAN_NAME
CompilationMXBean
的
ObjectName 的字符串表示形式。
public static final String MEMORY_MXBEAN_NAME
MemoryMXBean
的
ObjectName 的字符串表示形式。
public static final String OPERATING_SYSTEM_MXBEAN_NAME
OperatingSystemMXBean
的
ObjectName 的字符串表示形式。
public static final String RUNTIME_MXBEAN_NAME
RuntimeMXBean
的
ObjectName 的字符串表示形式。
public static final String THREAD_MXBEAN_NAME
ThreadMXBean
的
ObjectName 的字符串表示形式。
public static final String GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
GarbageCollectorMXBean
的
ObjectName 中的域名和类型键属性。
GarbageCollectorMXBean 的唯一
ObjectName 可以通过在此字符串后添加 "
,name=
collector's name" 形成。
public static final String MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
MemoryManagerMXBean
的
ObjectName 中的域名和类型键属性。
MemoryManagerMXBean 的唯一
ObjectName 可以通过在此字符串后添加 "
,name=
manager's name" 形成。
public static final String MEMORY_POOL_MXBEAN_DOMAIN_TYPE
MemoryPoolMXBean
的
ObjectName 中的域名和类型键属性。
MemoryPoolMXBean 的唯一
ObjectName 可以通过在此字符串后添加 "
,name=
pool's name" 形成。
方法详细信息 |
---|
public static ClassLoadingMXBean getClassLoadingMXBean()
ClassLoadingMXBean
对象。
public static MemoryMXBean getMemoryMXBean()
MemoryMXBean
对象。
public static ThreadMXBean getThreadMXBean()
ThreadMXBean
对象。
public static RuntimeMXBean getRuntimeMXBean()
RuntimeMXBean
对象。
public static CompilationMXBean getCompilationMXBean()
CompilationMXBean
对象,或者,如果 Java 虚拟机没有编译系统,则返回
null。
public static OperatingSystemMXBean getOperatingSystemMXBean()
OperatingSystemMXBean
对象。
public static List<MemoryPoolMXBean> getMemoryPoolMXBeans()
MemoryPoolMXBean
对象列表。Java 虚拟机可以有一个或多个内存池。可以在运行期间添加或删除内存池。
public static List<MemoryManagerMXBean> getMemoryManagerMXBeans()
MemoryManagerMXBean
对象列表。Java 虚拟机可以有一个或多个内存管理器。可以在运行期间添加或删除内存管理器。
public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans()
GarbageCollectorMXBean
对象列表。Java 虚拟机可以有一个或多个
GarbageCollectorMXBean 对象。可以在运行期间添加或删除
GarbageCollectorMXBean。
public static MBeanServer getPlatformMBeanServer()
MBeanServer
。第一次调用此方法时,将首先通过调用
MBeanServerFactory.createMBeanServer
方法创建平台
MBeanServer,然后通过使用类描述中定义的
MXBean 名称在此平台
MBeanServer 中注册平台 MXBean。在后续的调用中,此方法将直接返回最初创建的平台
MBeanServer。
动态创建和销毁的 MXBean(如内存池
和管理器
)将自动注册到平台 MBeanServer 和从中注销。
如果设置了系统属性 javax.management.builder.initial,将由指定的 MBeanServerBuilder
进行平台 MBeanServer 创建。
建议也将此平台用于注册平台 MXBean 之外的其他应用程序管理 Bean。这将允许所有 MBean 通过同一个 MBeanServer 发布,从而能够更方便地进行网络发布和发现。应该避免平台 MXBean 的名称冲突。
SecurityException
- 如果安全管理器和调用方不具有
MBeanServerFactory.createMBeanServer()
所需要的权限。
MBeanServerFactory
,
MBeanServerFactory.createMBeanServer()
public static <T> T newPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface) throws IOException
此方法等效于:
Proxy.newProxyInstance
(mxbeanInterface.getClassLoader(), new Class[] { mxbeanInterface }, handler)
其中
handler 是一个
InvocationHandler
,对 MXBean 接口的方法调用将调度到其上。此
handler 会在将 MXBean 数据类型的输入参数转发到
MBeanServer 之前将其转换为其映射的开放类型,并将通过
MBeanServer 的 MXBean 方法调用的返回值由开放类型转换为在 MXBean 接口中声明的对应返回类型。
如果 MXBean 是通知发出者(即它实现了 NotificationEmitter
),则 mxbeanInterface 和 NotificationEmitter 都将由此代理实现。
注:
IOException
。如果使用代理远程访问平台 MXBean 的应用程序要访问 MBeanServerConnector 接口,则应该准备捕获 IOException。InvalidObjectException
,当 MXBean 代理接收到一个枚举常数的名称,而该名称客户端应用程序中加载的枚举类又缺少此枚举常数时,将抛出此异常。MBeanServerInvocationHandler
或其 newProxyInstance
方法不能用于为平台 MXBean 创建代理。MBeanServerInvocationHandler 创建的代理对象不会处理类规范中描述的平台 MXBean 的属性。
connection
- 要转发到的目标
MBeanServerConnection。
mxbeanName
- 要转发到的
connection 的平台 MXBean。
mxbeanName 的格式必须为
ObjectName
的格式。
mxbeanInterface
- 要由代理实现的 MXBean 接口。
IllegalArgumentException
- 如果
ObjectName
格式,或者IOException
- 如果在访问
MBeanServerConnection 时出现通信问题。