public class ManagementFactory extends Object
ManagementFactory class is a factory class for getting
 managed beans for the Java platform.
 This class consists of static methods each of which returns
 one or more platform MXBeans representing
 the management interface of a component of the Java virtual
 machine.
 A platform MXBean is a managed bean that conforms to the JMX Instrumentation Specification and only uses a set of basic data types. A JMX management application and the platform MBeanServer can interoperate without requiring classes for MXBean specific data types. The data types being transmitted between the JMX connector server and the connector client are open types and this allows interoperation across versions. See the specification of MXBeans for details.
Each platform MXBean is a PlatformManagedObject
 and it has a unique
 ObjectName for
 registration in the platform MBeanServer as returned by
 by the getObjectName
 method.
 
An application can access a platform MXBean in the following ways:
- 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 specific MBeanServerConnection to 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.
 The getPlatformManagementInterfaces
 method returns all management interfaces supported in the Java virtual machine
 including the standard management interfaces listed in the tables
 below as well as the management interfaces extended by the JDK implementation.
 
A Java virtual machine has a single instance of the following management interfaces:
A Java virtual machine has zero or a single instance of the following management interfaces.
Management Interface ObjectName CompilationMXBeanjava.lang:type=Compilation
A Java virtual machine may have one or more instances of the following management interfaces.
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
MXBean| Modifier and Type | Field | Description | 
|---|---|---|
| static String | CLASS_LOADING_MXBEAN_NAME | String representation of the
 ObjectName for the  ClassLoadingMXBean. | 
| static String | COMPILATION_MXBEAN_NAME | String representation of the
 ObjectName for the  CompilationMXBean. | 
| static String | GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE | The domain name and the type key property in
 the ObjectName for a  GarbageCollectorMXBean. | 
| static String | MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE | The domain name and the type key property in
 the ObjectName for a  MemoryManagerMXBean. | 
| static String | MEMORY_MXBEAN_NAME | String representation of the
 ObjectName for the  MemoryMXBean. | 
| static String | MEMORY_POOL_MXBEAN_DOMAIN_TYPE | The domain name and the type key property in
 the ObjectName for a  MemoryPoolMXBean. | 
| static String | OPERATING_SYSTEM_MXBEAN_NAME | String representation of the
 ObjectName for the  OperatingSystemMXBean. | 
| static String | RUNTIME_MXBEAN_NAME | String representation of the
 ObjectName for the  RuntimeMXBean. | 
| static String | THREAD_MXBEAN_NAME | String representation of the
 ObjectName for the  ThreadMXBean. | 
| Modifier and Type | Method | Description | 
|---|---|---|
| static ClassLoadingMXBean | getClassLoadingMXBean() | Returns the managed bean for the class loading system of
 the Java virtual machine. | 
| static CompilationMXBean | getCompilationMXBean() | Returns the managed bean for the compilation system of
 the Java virtual machine. | 
| static List<GarbageCollectorMXBean> | getGarbageCollectorMXBeans() | Returns a list of  GarbageCollectorMXBeanobjects
 in the Java virtual machine. | 
| static List<MemoryManagerMXBean> | getMemoryManagerMXBeans() | Returns a list of  MemoryManagerMXBeanobjects
 in the Java virtual machine. | 
| static MemoryMXBean | getMemoryMXBean() | Returns the managed bean for the memory system of
 the Java virtual machine. | 
| static List<MemoryPoolMXBean> | getMemoryPoolMXBeans() | Returns a list of  MemoryPoolMXBeanobjects in the
 Java virtual machine. | 
| static OperatingSystemMXBean | getOperatingSystemMXBean() | Returns the managed bean for the operating system on which
 the Java virtual machine is running. | 
| static Set<Class<? extends PlatformManagedObject>> | getPlatformManagementInterfaces() | Returns the set of  Classobjects, subinterface ofPlatformManagedObject, representing
 all management interfaces for
 monitoring and managing the Java platform. | 
| static MBeanServer | getPlatformMBeanServer() | Returns the platform  MBeanServer. | 
| static <T extends PlatformManagedObject> | getPlatformMXBean(Class<T> mxbeanInterface) | Returns the platform MXBean implementing
 the given  mxbeanInterfacewhich is specified
 to have one single instance in the Java virtual machine. | 
| static <T extends PlatformManagedObject> | getPlatformMXBean(MBeanServerConnection connection,
                 Class<T> mxbeanInterface) | Returns the platform MXBean proxy for
  mxbeanInterfacewhich is specified to have one single
 instance in a Java virtual machine and the proxy will
 forward the method calls through the givenMBeanServerConnection. | 
| static <T extends PlatformManagedObject> | getPlatformMXBeans(Class<T> mxbeanInterface) | Returns the list of platform MXBeans implementing
 the given  mxbeanInterfacein the Java
 virtual machine. | 
| static <T extends PlatformManagedObject> | getPlatformMXBeans(MBeanServerConnection connection,
                  Class<T> mxbeanInterface) | Returns the list of the platform MXBean proxies for
 forwarding the method calls of the  mxbeanInterfacethrough the givenMBeanServerConnection. | 
| static RuntimeMXBean | getRuntimeMXBean() | Returns the managed bean for the runtime system of
 the Java virtual machine. | 
| static ThreadMXBean | getThreadMXBean() | Returns the managed bean for the thread system of
 the Java virtual machine. | 
| static <T> T | newPlatformMXBeanProxy(MBeanServerConnection connection,
                      String mxbeanName,
                      Class<T> mxbeanInterface) | Returns a proxy for a platform MXBean interface of a
 given MXBean name
 that forwards its method calls through the given
 MBeanServerConnection. | 
public static final String CLASS_LOADING_MXBEAN_NAME
ClassLoadingMXBean.public static final String COMPILATION_MXBEAN_NAME
CompilationMXBean.public static final String MEMORY_MXBEAN_NAME
MemoryMXBean.public static final String OPERATING_SYSTEM_MXBEAN_NAME
OperatingSystemMXBean.public static final String RUNTIME_MXBEAN_NAME
RuntimeMXBean.public static final String THREAD_MXBEAN_NAME
ThreadMXBean.public static final String GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
GarbageCollectorMXBean.
 The unique ObjectName for a GarbageCollectorMXBean
 can be formed by appending this string with
 ",name=collector's name".public static final String MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
MemoryManagerMXBean.
 The unique ObjectName for a MemoryManagerMXBean
 can be formed by appending this string with
 ",name=manager's name".public static final String MEMORY_POOL_MXBEAN_DOMAIN_TYPE
MemoryPoolMXBean.
 The unique ObjectName for a MemoryPoolMXBean
 can be formed by appending this string with
 ,name=pool's name.public static ClassLoadingMXBean getClassLoadingMXBean()
ClassLoadingMXBean object for
 the Java virtual machine.public static MemoryMXBean getMemoryMXBean()
MemoryMXBean object for the Java virtual machine.public static ThreadMXBean getThreadMXBean()
ThreadMXBean object for the Java virtual machine.public static RuntimeMXBean getRuntimeMXBean()
RuntimeMXBean object for the Java virtual machine.public static CompilationMXBean getCompilationMXBean()
CompilationMXBean object for the Java virtual
   machine or null if the Java virtual machine has
   no compilation system.public static OperatingSystemMXBean getOperatingSystemMXBean()
OperatingSystemMXBean object for
 the Java virtual machine.public static List<MemoryPoolMXBean> getMemoryPoolMXBeans()
MemoryPoolMXBean objects in the
 Java virtual machine.
 The Java virtual machine can have one or more memory pools.
 It may add or remove memory pools during execution.public static List<MemoryManagerMXBean> getMemoryManagerMXBeans()
MemoryManagerMXBean objects
 in the Java virtual machine.
 The Java virtual machine can have one or more memory managers.
 It may add or remove memory managers during execution.public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans()
GarbageCollectorMXBean objects
 in the Java virtual machine.
 The Java virtual machine may have one or more
 GarbageCollectorMXBean objects.
 It may add or remove GarbageCollectorMXBean
 during execution.public static MBeanServer getPlatformMBeanServer()
MBeanServer.
 On the first call to this method, it first creates the platform
 MBeanServer by calling the
 MBeanServerFactory.createMBeanServer
 method and registers each platform MXBean in this platform
 MBeanServer with its
 ObjectName.
 This method, in subsequent calls, will simply return the
 initially created platform MBeanServer.
 
 MXBeans that get created and destroyed dynamically, for example,
 memory pools and
 managers,
 will automatically be registered and deregistered into the platform
 MBeanServer.
 
 If the system property javax.management.builder.initial
 is set, the platform MBeanServer creation will be done
 by the specified MBeanServerBuilder.
 
 It is recommended that this platform MBeanServer also be used
 to register other application managed beans
 besides the platform MXBeans.
 This will allow all MBeans to be published through the same
 MBeanServer and hence allow for easier network publishing
 and discovery.
 Name conflicts with the platform MXBeans should be avoided.
MBeanServer; the platform
         MXBeans are registered into the platform MBeanServer
         at the first time this method is called.SecurityException - if there is a security manager
 and the caller does not have the permission required by
 MBeanServerFactory.createMBeanServer().MBeanServerFactory, 
MBeanServerFactory.createMBeanServer()public static <T> T newPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface) throws IOException
This method is equivalent to:
 Proxy.newProxyInstance(mxbeanInterface.getClassLoader(),
        new Class[] { mxbeanInterface }, handler)
 
 where handler is an InvocationHandler to which method invocations to the MXBean interface
 are dispatched. This handler converts an input parameter
 from an MXBean data type to its mapped open type before forwarding
 to the MBeanServer and converts a return value from
 an MXBean method call through the MBeanServer
 from an open type to the corresponding return type declared in
 the MXBean interface.
 
 If the MXBean is a notification emitter (i.e.,
 it implements
 NotificationEmitter),
 both the mxbeanInterface and NotificationEmitter
 will be implemented by this proxy.
 
Notes:
IOException may be thrown
 when the communication problem occurs with the connector server.
 An application remotely accesses the platform MXBeans using
 proxy should prepare to catch IOException as if
 accessing with the MBeanServerConnector interface.InvalidObjectException
 which is thrown when an MXBean proxy receives a name of an
 enum constant which is missing in the enum class loaded in
 the client application. MBeanServerInvocationHandler or its
 newProxyInstance method cannot be used to create
 a proxy for a platform MXBean. The proxy object created
 by MBeanServerInvocationHandler does not handle
 the properties of the platform MXBeans described in
 the class specification.
T - an mxbeanInterface type parameterconnection - the MBeanServerConnection to forward to.mxbeanName - the name of a platform MXBean within
 connection to forward to. mxbeanName must be
 in the format of ObjectName.mxbeanInterface - the MXBean interface to be implemented
 by the proxy.null if not exist.IllegalArgumentException - if
 ObjectName format, orIOException - if a communication problem
 occurred when accessing the MBeanServerConnection.public static <T extends PlatformManagedObject> T getPlatformMXBean(Class<T> mxbeanInterface)
mxbeanInterface which is specified
 to have one single instance in the Java virtual machine.
 This method may return null if the management interface
 is not implemented in the Java virtual machine (for example,
 a Java virtual machine with no compilation system does not
 implement CompilationMXBean);
 otherwise, this method is equivalent to calling:
 
    getPlatformMXBeans(mxbeanInterface).get(0);
 T - an mxbeanInterface type parametermxbeanInterface - a management interface for a platform
     MXBean with one single instance in the Java virtual machine
     if implemented.mxbeanInterface, or null if not exist.IllegalArgumentException - if mxbeanInterface
 is not a platform management interface or
 not a singleton platform MXBean.public static <T extends PlatformManagedObject> List<T> getPlatformMXBeans(Class<T> mxbeanInterface)
mxbeanInterface in the Java
 virtual machine.
 The returned list may contain zero, one, or more instances.
 The number of instances in the returned list is defined
 in the specification of the given management interface.
 The order is undefined and there is no guarantee that
 the list returned is in the same order as previous invocations.T - an mxbeanInterface type parametermxbeanInterface - a management interface for a platform
                        MXBeanmxbeanInterface.IllegalArgumentException - if mxbeanInterface
 is not a platform management interface.public static <T extends PlatformManagedObject> T getPlatformMXBean(MBeanServerConnection connection, Class<T> mxbeanInterface) throws IOException
mxbeanInterface which is specified to have one single
 instance in a Java virtual machine and the proxy will
 forward the method calls through the given MBeanServerConnection.
 This method may return null if the management interface
 is not implemented in the Java virtual machine being monitored
 (for example, a Java virtual machine with no compilation system
 does not implement CompilationMXBean);
 otherwise, this method is equivalent to calling:
 
     getPlatformMXBeans(connection, mxbeanInterface).get(0);
 T - an mxbeanInterface type parameterconnection - the MBeanServerConnection to forward to.mxbeanInterface - a management interface for a platform
     MXBean with one single instance in the Java virtual machine
     being monitored, if implemented.mxbeanInterface
 through the given MBeanServerConnection,
 or null if not exist.IllegalArgumentException - if mxbeanInterface
 is not a platform management interface or
 not a singleton platform MXBean.IOException - if a communication problem
 occurred when accessing the MBeanServerConnection.newPlatformMXBeanProxy(javax.management.MBeanServerConnection, java.lang.String, java.lang.Class<T>)public static <T extends PlatformManagedObject> List<T> getPlatformMXBeans(MBeanServerConnection connection, Class<T> mxbeanInterface) throws IOException
mxbeanInterface
 through the given MBeanServerConnection.
 The returned list may contain zero, one, or more instances.
 The number of instances in the returned list is defined
 in the specification of the given management interface.
 The order is undefined and there is no guarantee that
 the list returned is in the same order as previous invocations.T - an mxbeanInterface type parameterconnection - the MBeanServerConnection to forward to.mxbeanInterface - a management interface for a platform
                        MXBeanmxbeanInterface
 through the given MBeanServerConnection.IllegalArgumentException - if mxbeanInterface
 is not a platform management interface.IOException - if a communication problem
 occurred when accessing the MBeanServerConnection.newPlatformMXBeanProxy(javax.management.MBeanServerConnection, java.lang.String, java.lang.Class<T>)public static Set<Class<? extends PlatformManagedObject>> getPlatformManagementInterfaces()
Class objects, subinterface of
 PlatformManagedObject, representing
 all management interfaces for
 monitoring and managing the Java platform.Class objects, subinterface of
 PlatformManagedObject representing
 the management interfaces for
 monitoring and managing the Java platform. Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2025, Oracle and/or its affiliates.  All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.