java.lang.management
Class ManagementFactory

java.lang.Object
  extended by java.lang.management.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 MBeanServer to access the beans locally, or an 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 MBeanInfo.

Data Type UsedData Type Returned
Primitive types (int, char, etc.) Same
Wrapper classes (,

Since:
1.5

Field Summary
static String CLASS_LOADING_MXBEAN_NAME
          The object name for the class loading bean.
static String COMPILATION_MXBEAN_NAME
          The object name for the compilation bean.
static String GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
          The domain for the garbage collecting beans.
static String MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
          The domain for the memory manager beans.
static String MEMORY_MXBEAN_NAME
          The object name for the memory bean.
static String MEMORY_POOL_MXBEAN_DOMAIN_TYPE
          The domain for the memory pool beans.
static String OPERATING_SYSTEM_MXBEAN_NAME
          The object name for the operating system bean.
static String RUNTIME_MXBEAN_NAME
          The object name for the runtime bean.
static String THREAD_MXBEAN_NAME
          The object name for the threading bean.
 
Method Summary
static ClassLoadingMXBean getClassLoadingMXBean()
          Returns the class loading management bean for the running virtual machine.
static CompilationMXBean getCompilationMXBean()
          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 MemoryMXBean getMemoryMXBean()
          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 OperatingSystemMXBean getOperatingSystemMXBean()
          Returns the operating system management bean for the operating system on which the virtual machine is running.
static MBeanServer getPlatformMBeanServer()
           Returns the platform MBeanServer.
static RuntimeMXBean getRuntimeMXBean()
          Returns the runtime management bean for the running virtual machine.
static ThreadMXBean getThreadMXBean()
          Returns the thread management bean for the running virtual machine.
static
<T> T
newPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface)
           Returns a proxy for the specified platform bean.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLASS_LOADING_MXBEAN_NAME

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

See Also:
Constant Field Values

COMPILATION_MXBEAN_NAME

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

See Also:
Constant Field Values

GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE

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

See Also:
Constant Field Values

MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE

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

See Also:
Constant Field Values

MEMORY_MXBEAN_NAME

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

See Also:
Constant Field Values

MEMORY_POOL_MXBEAN_DOMAIN_TYPE

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

See Also:
Constant Field Values

OPERATING_SYSTEM_MXBEAN_NAME

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

See Also:
Constant Field Values

RUNTIME_MXBEAN_NAME

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

See Also:
Constant Field Values

THREAD_MXBEAN_NAME

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

See Also:
Constant Field Values
Method Detail

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 OperatingSystemMXBean for the underlying operating system.

getRuntimeMXBean

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

Returns:
an instance of RuntimeMXBean for this virtual machine.

getClassLoadingMXBean

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

Returns:
an instance of ClassLoadingMXBean for this virtual machine.

getThreadMXBean

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

Returns:
an instance of ThreadMXBean for this virtual machine.

getMemoryMXBean

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

Returns:
an instance of MemoryMXBean 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 CompilationMXBean for this virtual machine, or null if the virtual machine doesn't include a Just-In-Time (JIT) compiler.

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.

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.

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.

getPlatformMBeanServer

public static MBeanServer getPlatformMBeanServer()

Returns the platform MBeanServer. On the first call to this method, a server instance is retrieved from the 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 MBeanServer
Throws:
SecurityException - if a security manager exists and the caller's permissions don't imply MBeanServerPermission(String)("createMBeanServer")
See Also:
MBeanServerFactory, MBeanServerFactory.createMBeanServer()

newPlatformMXBeanProxy

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

Returns a proxy for the specified platform bean. A proxy object is created using Proxy.newProxyInstance(mxbeanInterface.getClassLoader(), new Class[] { mxbeanInterface }, handler). The 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 MBeanServerInvocationHandler inappropriate for providing such a proxy.

Note: use of the proxy may result in IOExceptions from the underlying MBeanServerConnection and a 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 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 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.