Management Interface
Description
{@link java.lang.management.ClassLoadingMXBean} Class loading system of the Java virtual machine. {@link java.lang.management.CompilationMXBean} Compilation system of the Java virtual machine. {@link java.lang.management.MemoryMXBean} Memory system of the Java virtual machine. {@link java.lang.management.ThreadMXBean} Threads system of the Java virtual machine. {@link java.lang.management.RuntimeMXBean} Runtime system of the Java virtual machine. {@link java.lang.management.OperatingSystemMXBean} Operating system on which the Java virtual machine is running. {@link java.lang.management.GarbageCollectorMXBean} Garbage collector in the Java virtual machine. {@link java.lang.management.MemoryManagerMXBean} Memory manager in the Java virtual machine. {@link java.lang.management.MemoryPoolMXBean} Memory pool in the Java virtual machine.
A platform MXBean is a managed bean that defines the management interface for one component for the platform and is specified in the ManagementFactory class.
An application can monitor the instrumentation of the Java virtual machine and manage certain characteristics in the following ways:
A platform MBeanServer can be accessed with the {@link java.lang.management.ManagementFactory#getPlatformMBeanServer getPlatformMBeanServer} method. On the first call to this method, it creates the platform MBeanServer and registers all platform MXBeans including platform MXBeans defined in other packages such as {@link java.util.logging.LoggingMXBean}. Each platform MXBean is registered with a unique name defined in the {@link java.lang.management.ManagementFactory ManagementFactory} class for constructing {@link javax.management.ObjectName ObjectName}. This is a single MBeanServer that can be shared by different managed components running within the same Java virtual machine.
A data type used by the MXBean interfaces are mapped to an open type when being accessed via MBeanServer interface. The data type mapping is specified in the {@link java.lang.management.ManagementFactory ManagementFactory} class.
RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean(); // Get the standard attribute "VmVendor" String vendor = mxbean.getVmVendor();
MBeanServerConnection mbs; // Connect to a running JVM (or itself) and get MBeanServerConnection // that has the JVM MXBeans registered in it ... try { // Assuming the RuntimeMXBean has been registered in mbs ObjectName oname = new ObjectName(ManagementFactory.RUNTIME_MXBEAN_NAME); // Get standard attribute "VmVendor" String vendor = (String) mbs.getAttribute(oname, "VmVendor"); } catch (....) { // Catch the exceptions thrown by ObjectName constructor // and MBeanServer.getAttribute method ... }
MBeanServerConnection mbs; // Connect to a running JVM (or itself) and get MBeanServerConnection // that has the JVM MBeans registered in it ... // Get a MBean proxy for RuntimeMXBean interface RuntimeMXBean proxy = ManagementFactory.newPlatformMXBeanProxy(mbs, ManagementFactory.RUNTIME_MXBEAN_NAME, RuntimeMXBean.class); // Get standard attribute "VmVendor" String vendor = proxy.getVmVendor();
It is recommended to name the platform-specific attributes with a vendor-specific prefix such as the vendor's name to avoid collisions of the attribute name between the future extension to the standard management interface and the platform extension. If the future extension to the standard management interface defines a new attribute for a management interface and the attribute name is happened to be same as some vendor-specific attribute's name, the applications accessing that vendor-specific attribute would have to be modified to cope with versioning and compatibility issues.
Below is an example showing how to access a platform-specific attribute from Sun's implementation of the RuntimeMXBean.
1) Direct access to the Sun-specific MXBean interface
com.sun.management.RuntimeMXBean mxbean = (com.sun.management.RuntimeMXBean) ManagementFactory.getRuntimeMXBean(); // Get the standard attribute "VmVendor" String vendor = mxbean.getVmVendor(); // Get the platform-specific attribute "Bar" BarType bar = mxbean.getBar();
2) Access the Sun-specific MXBean interface via MBeanServer
MBeanServerConnection mbs; // Connect to a running JVM (or itself) and get MBeanServerConnection // that has the JVM MXBeans registered in it ... try { // Assuming the RuntimeMXBean has been registered in mbs ObjectName oname = new ObjectName(ManagementFactory.RUNTIME_MXBEAN_NAME); // Get standard attribute "VmVendor" String vendor = (String) mbs.getAttribute(oname, "VmVendor"); // Check if this MXBean contains Sun's extension if (mbs.isInstanceOf(oname, "com.sun.management.RuntimeMXBean")) { // Get platform-specific attribute "Bar" BarType bar = (String) mbs.getAttribute(oname, "Bar"); } } catch (....) { // Catch the exceptions thrown by ObjectName constructor // and MBeanServer methods ... }
Unless otherwise noted, passing a null argument to a constructor or method in any class or interface in this package will cause a {@link java.lang.NullPointerException NullPointerException} to be thrown.
The java.lang.management API is thread-safe. @see JMX Specification. @author Mandy Chung @version 1.17, 05/05/07 @since 1.5