JavaTM 2 Platform
Standard Ed. 6

軟體套件 java.lang.management

提供管理介面,用於監視和管理 Java 虛擬機器以及 Java 虛擬機器在其上運行的作業系統。

請參見:
          描述

介面摘要
ClassLoadingMXBean 用於 Java 虛擬機器的類別載入系統的管理介面。
CompilationMXBean 用於 Java 虛擬機器的編譯系統的管理介面。
GarbageCollectorMXBean 用於 Java 虛擬機器的垃圾回收的管理介面。
MemoryManagerMXBean 記憶體管理器的管理介面。
MemoryMXBean Java 虛擬機器記憶體系統的管理介面。
MemoryPoolMXBean 記憶體池的管理介面。
OperatingSystemMXBean 用於作業系統的管理介面,Java 虛擬機器在此作業系統上運行。
RuntimeMXBean Java 虛擬機器的運行時系統的管理介面。
ThreadMXBean Java 虛擬機器執行緒系統的管理介面。
 

類別摘要
LockInfo 關於 的資訊。
ManagementFactory ManagementFactory 類別是一種處理器類別,用於獲取 Java 平臺的管理 Bean。
ManagementPermission 使用 SecurityManager 運行的程式碼調用 Java 平臺的管理介面中定義的方法時,SecurityManager 將要檢查的權限。
MemoryNotificationInfo 關於記憶體通知的資訊。
MemoryUsage 表示記憶體使用量快照的 MemoryUsage 物件。
MonitorInfo 關於物件監視器鎖的資訊。
ThreadInfo 執行緒資訊。
 

列舉摘要
MemoryType 記憶體池的型別。
 

軟體套件 java.lang.management 的描述

提供管理介面,用於監視和管理 Java 虛擬機器以及 Java 虛擬機器在其上運行的作業系統。它同時允許從本地和遠端對正在運行的 Java 虛擬機器進行監視和管理。

平臺 MXBean

此套件定義以下元件的管理介面:

管理介面

描述

ClassLoadingMXBean Java 虛擬機器的類別載入系統。
CompilationMXBean Java 虛擬機器的編譯系統。
MemoryMXBean Java 虛擬機器的記憶體系統。
ThreadMXBean Java 虛擬機器的執行緒系統。
RuntimeMXBean Java 虛擬機器的運行時系統。
OperatingSystemMXBean Java 虛擬機器在其上運行的作業系統。
GarbageCollectorMXBean Java 虛擬機器中的垃圾回收器。
MemoryManagerMXBean Java 虛擬機器中的記憶體管理器。
MemoryPoolMXBean Java 虛擬機器中的記憶體池。

平臺 MXBean 是一種管理 Bean,它定義平臺一個元件的管理介面,在 ManagementFactory 類別中定義。

應用程序可以採用以下方式監視 Java 虛擬機器的監測和管理特定的特徵:

以下給出了一些採用不同方式存取 MXBean 的範例

ManagementFactory

ManagementFactory 類別是 Java 平臺的管理處理器類別。此類別提供了一組靜態處理器方法,用以獲得 Java 平臺的 MXBean,從而允許應用程序直接存取 MXBean。

使用 getPlatformMBeanServer 方法可以存取平臺 MBeanServer。第一次調用此方法時,它將創建平臺 MBeanServer 並註冊所有的平臺 MXBean,包括在其他包(如 LoggingMXBean)中定義的平臺 MXBean。每個平臺 MXBean 均使用用於建構 ObjectNameManagementFactory 類別中定義的唯一名稱進行註冊。這是唯一可以由在相同 Java 虛擬機器內運行的不同管理元件共享的 MBeanServer。

互操作性

管理應用程序和正在運行的虛擬機器的平臺 MBeanServer 可以進行互操作,而無需平臺 MXBean 介面使用的類別。JMX 連接器伺服器和連接器客戶端之間傳送的資料型別為 JMX 開放型別,這就允許跨版本的互操作。

當通過 MBeanServer 介面進行存取時,MXBean 介面使用的資料型別將映射為開放型別。資料型別映射在 ManagementFactory 類別中指定。

存取 MXBean 的方法

有三種存取管理介面的方法。

  1. 直接調用同一 Java 虛擬機器內的 MXBean 中的方法。
       RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean();
    
       // Get the standard attribute "VmVendor"
       String vendor = mxbean.getVmVendor();
    
    
  2. 通過一個連接到正在運行的虛擬機器的平臺 MBeanServerMBeanServerConnection
  3.    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
           ...
       }
    
    
  4. 使用 MXBean 代理。
  5.    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();
    

平臺擴展

Java 虛擬機器實作通過定義與平臺有關的介面(它擴展了標準管理介面,以包括特定於平臺的規格和管理操作),可以將其平臺擴展添加到管理介面。ManagementFactory 類別中的靜態處理器方法將返回具有平臺擴展的 MBean。

建議使用特定於供應商的前綴(如供應商的名稱)對特定於平臺的屬性進行命名,以避免標準管理介面的未來擴展與平臺擴展之間的屬性名稱衝突。如果標準管理介面的未來擴展為管理介面定義了一個新屬性,而該屬性名稱碰巧與某個特定於供應商的屬性的名稱相同,則必須修改存取該特定於供應商的屬性的應用程序,以處理版本控制和相容性問題。

以下範例演示了如何存取 Sun 的 RuntimeMXBean 實作中的特定於平臺的屬性。

1) 直接存取特定於 Sun 的 MXBean 介面

   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) 通過 MBeanServer 存取特定於 Sun 的 MXBean 介面

   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
       ...
   }

除非另有說明,向此套件的任何類別或介面中的建構子或方法傳遞 null 變數,將會拋出 NullPointerException

java.lang.management API 是執行緒安全的。

從以下版本開始:
1.5
另請參見:
JMX 規範。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only