java.lang.management

Class ManagementFactory

public class ManagementFactory extends Object

Provides access to the system's management beans via a series of static methods.

An instance of a system management bean can be obtained by using one of the following methods:

  1. Calling the appropriate static method of this factory.
  2. Using the platform {@link javax.management.MBeanServer} to access the beans locally, or an {@link javax.management.MBeanServerConnection} for remote access. The attributes and operations use the limited range of data types specified below.

Open Data Types

The data types used by the management beans are restricted to open data types to aid interoperability. This allows the beans to be accessed remotely, including from non-Java clients. Below is a table which lists the types used by the beans on the left, and the types they are converted to when returned via a bean server on the right. Type information is provided for each bean by obtaining its instance of {@link javax.management.MBeanInfo}.

Data Type UsedData Type Returned
Primitive types (int, char, etc.) Same
Wrapper classes ({@link{java.lang.Integer},

Since: 1.5

UNKNOWN: etc.)

Same
An {@link java.lang.Enum} The name of the enumeration constant
An array of type E An array of the same dimensions with this mapping applied to E.
A class with `getter' methods and a from({@link javax.management.openmbean.CompositeData}) method. The equivalent {@link javax.management.openmbean.CompositeData} instance, specified by the from method.
A map with keys of type K and values of type V. A {@link javax.management.openmbean.TabularData} instance, with the row type containing two items, "key" and "value" with the types K and V respectively (with translation applied).
A list of type E. An array with this mapping applied to E.

Field Summary
static StringCLASS_LOADING_MXBEAN_NAME
The object name for the class loading bean.
static StringCOMPILATION_MXBEAN_NAME
The object name for the compilation bean.
static StringGARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
The domain for the garbage collecting beans.
static StringMEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
The domain for the memory manager beans.
static StringMEMORY_MXBEAN_NAME
The object name for the memory bean.
static StringMEMORY_POOL_MXBEAN_DOMAIN_TYPE
The domain for the memory pool beans.
static StringOPERATING_SYSTEM_MXBEAN_NAME
The object name for the operating system bean.
static StringRUNTIME_MXBEAN_NAME
The object name for the runtime bean.
static StringTHREAD_MXBEAN_NAME
The object name for the threading bean.
Method Summary
static ClassLoadingMXBeangetClassLoadingMXBean()
Returns the class loading management bean for the running virtual machine.
static CompilationMXBeangetCompilationMXBean()
Returns the compilation bean for the running virtual machine, if supported.
static List<GarbageCollectorMXBean>getGarbageCollectorMXBeans()
Returns the garbage collector beans for the running virtual machine.
static List<MemoryManagerMXBean>getMemoryManagerMXBeans()
Returns the memory manager beans for the running virtual machine.
static MemoryMXBeangetMemoryMXBean()
Returns the memory management bean for the running virtual machine.
static List<MemoryPoolMXBean>getMemoryPoolMXBeans()
Returns the memory pool beans for the running virtual machine.
static OperatingSystemMXBeangetOperatingSystemMXBean()
Returns the operating system management bean for the operating system on which the virtual machine is running.
static MBeanServergetPlatformMBeanServer()

Returns the platform {@link javax.management.MBeanServer}.

static RuntimeMXBeangetRuntimeMXBean()
Returns the runtime management bean for the running virtual machine.
static ThreadMXBeangetThreadMXBean()
Returns the thread management bean for the running virtual machine.
static <T> TnewPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface)

Returns a proxy for the specified platform bean.

Field Detail

CLASS_LOADING_MXBEAN_NAME

public static final String CLASS_LOADING_MXBEAN_NAME
The object name for the class loading bean.

COMPILATION_MXBEAN_NAME

public static final String COMPILATION_MXBEAN_NAME
The object name for the compilation bean.

GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE

public static final String GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
The domain for the garbage collecting beans.

MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE

public static final String MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
The domain for the memory manager beans.

MEMORY_MXBEAN_NAME

public static final String MEMORY_MXBEAN_NAME
The object name for the memory bean.

MEMORY_POOL_MXBEAN_DOMAIN_TYPE

public static final String MEMORY_POOL_MXBEAN_DOMAIN_TYPE
The domain for the memory pool beans.

OPERATING_SYSTEM_MXBEAN_NAME

public static final String OPERATING_SYSTEM_MXBEAN_NAME
The object name for the operating system bean.

RUNTIME_MXBEAN_NAME

public static final String RUNTIME_MXBEAN_NAME
The object name for the runtime bean.

THREAD_MXBEAN_NAME

public static final String THREAD_MXBEAN_NAME
The object name for the threading bean.

Method Detail

getClassLoadingMXBean

public static ClassLoadingMXBean getClassLoadingMXBean()
Returns the class loading management bean for the running virtual machine.

Returns: an instance of {@link ClassLoadingMXBean} for this virtual machine.

getCompilationMXBean

public static CompilationMXBean getCompilationMXBean()
Returns the compilation bean for the running virtual machine, if supported. Otherwise, it returns null.

Returns: an instance of {@link CompilationMXBean} for this virtual machine, or null if the virtual machine doesn't include a Just-In-Time (JIT) compiler.

getGarbageCollectorMXBeans

public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans()
Returns the garbage collector beans for the running virtual machine. These may change during the course of execution.

Returns: a list of garbage collector beans, one for each pool.

getMemoryManagerMXBeans

public static List<MemoryManagerMXBean> getMemoryManagerMXBeans()
Returns the memory manager beans for the running virtual machine. These may change during the course of execution.

Returns: a list of memory manager beans, one for each manager.

getMemoryMXBean

public static MemoryMXBean getMemoryMXBean()
Returns the memory management bean for the running virtual machine.

Returns: an instance of {@link MemoryMXBean} for this virtual machine.

getMemoryPoolMXBeans

public static List<MemoryPoolMXBean> getMemoryPoolMXBeans()
Returns the memory pool beans for the running virtual machine. These may change during the course of execution.

Returns: a list of memory pool beans, one for each pool.

getOperatingSystemMXBean

public static OperatingSystemMXBean getOperatingSystemMXBean()
Returns the operating system management bean for the operating system on which the virtual machine is running.

Returns: an instance of {@link OperatingSystemMXBean} for the underlying operating system.

getPlatformMBeanServer

public static MBeanServer getPlatformMBeanServer()

Returns the platform {@link javax.management.MBeanServer}. On the first call to this method, a server instance is retrieved from the {@link javax.management.MBeanServerFactory} and each of the beans are registered with it. Subsequent calls return the existing instance. If the property javax.management.builder.initial is set, its value will be used as the name of the class which is used to provide the server instance.

It is recommended that the platform server is used for other beans as well, in order to simplify their discovery and publication. Name conflicts should be avoided.

Returns: the platform {@link javax.management.MBeanServer}

Throws: SecurityException if a security manager exists and the caller's permissions don't imply {@link MBeanServerPermission(String)}("createMBeanServer")

See Also: MBeanServerFactory createMBeanServer

getRuntimeMXBean

public static RuntimeMXBean getRuntimeMXBean()
Returns the runtime management bean for the running virtual machine.

Returns: an instance of {@link RuntimeMXBean} for this virtual machine.

getThreadMXBean

public static ThreadMXBean getThreadMXBean()
Returns the thread management bean for the running virtual machine.

Returns: an instance of {@link ThreadMXBean} for this virtual machine.

newPlatformMXBeanProxy

public static <T> T newPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface)

Returns a proxy for the specified platform bean. A proxy object is created using Proxy.newProxyInstance(mxbeanInterface.getClassLoader(), new Class[] { mxbeanInterface }, handler). The {@link javax.management.NotificationEmitter} class is also added to the array if the bean provides notifications. handler refers to the invocation handler which forwards calls to the connection, and also provides translation between the Java data types used in the bean interfaces and the open data types, as specified in the description of this class. It is this translation that makes the usual {@link javax.management.MBeanServerInvocationHandler} inappropriate for providing such a proxy.

Note: use of the proxy may result in {@link java.io.IOException}s from the underlying {@link MBeanServerConnection} and a {@link java.io.InvalidObjectException} if enum constants used on the client and the server don't match.

Parameters: connection the server connection to use to access the bean. mxbeanName the {@link javax.management.ObjectName} of the bean to provide a proxy for. mxbeanInterface the interface for the bean being proxied.

Returns: a proxy for the specified bean.

Throws: IllegalArgumentException if mxbeanName is not a valid {@link javax.management.ObjectName}, the interface and name do not match the same bean, the name does not refer to a platform bean or the bean is not registered with the server accessed by connection. IOException if the connection throws one.