JavaTM 2 Platform
Standard Ed. 6

java.lang.management
類別 ManagementFactory

java.lang.Object
  繼承者 java.lang.management.ManagementFactory

public class ManagementFactory
extends Object

ManagementFactory 類別是一種處理器類別,用於獲取 Java 平臺的管理 Bean。此類別由靜態方法組成,每種靜態方法都會返回一個或多個表示 Java 虛擬機器元件的管理介面的平臺 MXBean

應用程序可以採用以下方式存取平臺 MXBean:

平臺 MXBean

平臺 MXBean 是一種管理 Bean,它符合 JMX Instrumentation Specification,僅使用以下所描述的一組基本資料型別。有關細節,請參閱 MXBean 規範。JMX 管理應用程序和平臺 MBeanServer 可以進行互操作,而無需 MXBean 特定資料型別的類別。JMX 連接器伺服器和連接器客戶機之間傳送的資料型別為開放型別,而這就允許不同版本進行互操作。

平臺 MXBean 介面僅使用以下資料型別:

當通過 MBeanServer 存取平臺 MXBean 的屬性或操作時,將按以下方式對資料型別進行映射:

平臺 MXBean 的 MBeanInfo 將屬性和操作的資料型別描述為上述指定要映射到的基本型別或開放型別。

例如,MemoryMXBean 介面具有以下獲取和設置方法:

 public MemoryUsage getHeapMemoryUsage();
 public boolean isVerbose();
 public void setVerbose(boolean value);
 
MemoryMXBeanMBeanInfo 中的這些屬性的名稱和型別如下:
屬性名稱 型別
HeapMemoryUsage CompositeData representing MemoryUsage
Verbose boolean

MXBean 名稱

Java 虛擬機器的每個平臺 MXBean 都具有唯一的 ObjectName,以在平臺 MBeanServer 中註冊。Java 虛擬機器具有以下管理介面的單一實例:
管理介面 物件名稱
ClassLoadingMXBean java.lang:type=ClassLoading
MemoryMXBean java.lang:type=Memory
ThreadMXBean java.lang:type=Threading
RuntimeMXBean java.lang:type=Runtime
OperatingSystemMXBean java.lang:type=OperatingSystem

Java 虛擬機器具有以下管理介面的零個或一個實例:

管理介面 物件名稱
CompilationMXBean java.lang:type=Compilation

Java 虛擬機器可能具有以下管理介面的一個或多個實例。

管理介面 物件名稱
GarbageCollectorMXBean java.lang:type=GarbageCollector,name=collector's name
MemoryManagerMXBean java.lang:type=MemoryManager,name=manager's name
MemoryPoolMXBean java.lang:type=MemoryPool,name=pool's name

從以下版本開始:
1.5
另請參見:
JMX Specification., Access Management Metrics, LoggingMXBean, MXBean

欄位摘要
static String CLASS_LOADING_MXBEAN_NAME
          ClassLoadingMXBeanObjectName 的字元串表示形式。
static String COMPILATION_MXBEAN_NAME
          CompilationMXBeanObjectName 的字元串表示形式。
static String GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
          GarbageCollectorMXBeanObjectName 中的域名和型別鍵屬性。
static String MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
          MemoryManagerMXBeanObjectName 中的域名和型別鍵屬性。
static String MEMORY_MXBEAN_NAME
          MemoryMXBeanObjectName 的字元串表示形式。
static String MEMORY_POOL_MXBEAN_DOMAIN_TYPE
          MemoryPoolMXBeanObjectName 中的域名和型別鍵屬性。
static String OPERATING_SYSTEM_MXBEAN_NAME
          OperatingSystemMXBeanObjectName 的字元串表示形式。
static String RUNTIME_MXBEAN_NAME
          RuntimeMXBeanObjectName 的字元串表示形式。
static String THREAD_MXBEAN_NAME
          ThreadMXBeanObjectName 的字元串表示形式。
 
方法摘要
static ClassLoadingMXBean getClassLoadingMXBean()
          返回 Java 虛擬機器的類別載入系統的管理 Bean。
static CompilationMXBean getCompilationMXBean()
          返回 Java 虛擬機器的編譯系統的管理 Bean。
static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans()
          返回 Java 虛擬機器中的 GarbageCollectorMXBean 物件列表。
static List<MemoryManagerMXBean> getMemoryManagerMXBeans()
          返回 Java 虛擬機器中的 MemoryManagerMXBean 物件列表。
static MemoryMXBean getMemoryMXBean()
          返回 Java 虛擬機器的記憶體系統的管理 Bean。
static List<MemoryPoolMXBean> getMemoryPoolMXBeans()
          返回 Java 虛擬機器中的 MemoryPoolMXBean 物件列表。
static OperatingSystemMXBean getOperatingSystemMXBean()
          返回運行 Java 虛擬機器的作業系統的管理 Bean。
static MBeanServer getPlatformMBeanServer()
          返回平臺 MBeanServer
static RuntimeMXBean getRuntimeMXBean()
          返回 Java 虛擬機器的運行時系統的管理 Bean。
static ThreadMXBean getThreadMXBean()
          返回 Java 虛擬機器的執行緒系統的管理 Bean。
static
<T> T
newPlatformMXBeanProxy(MBeanServerConnection connection, String mxbeanName, Class<T> mxbeanInterface)
          返回用於給定 MXBean 名稱的平臺 MXBean 介面的代理,以便通過給定 MBeanServerConnection 轉發其方法調用。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

CLASS_LOADING_MXBEAN_NAME

public static final String CLASS_LOADING_MXBEAN_NAME
ClassLoadingMXBeanObjectName 的字元串表示形式。

另請參見:
常數欄位值

COMPILATION_MXBEAN_NAME

public static final String COMPILATION_MXBEAN_NAME
CompilationMXBeanObjectName 的字元串表示形式。

另請參見:
常數欄位值

MEMORY_MXBEAN_NAME

public static final String MEMORY_MXBEAN_NAME
MemoryMXBeanObjectName 的字元串表示形式。

另請參見:
常數欄位值

OPERATING_SYSTEM_MXBEAN_NAME

public static final String OPERATING_SYSTEM_MXBEAN_NAME
OperatingSystemMXBeanObjectName 的字元串表示形式。

另請參見:
常數欄位值

RUNTIME_MXBEAN_NAME

public static final String RUNTIME_MXBEAN_NAME
RuntimeMXBeanObjectName 的字元串表示形式。

另請參見:
常數欄位值

THREAD_MXBEAN_NAME

public static final String THREAD_MXBEAN_NAME
ThreadMXBeanObjectName 的字元串表示形式。

另請參見:
常數欄位值

GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE

public static final String GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
GarbageCollectorMXBeanObjectName 中的域名和型別鍵屬性。GarbageCollectorMXBean 的唯一 ObjectName 可以通過在此字元串後添加 ",name=collector's name" 形成。

另請參見:
常數欄位值

MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE

public static final String MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
MemoryManagerMXBeanObjectName 中的域名和型別鍵屬性。MemoryManagerMXBean 的唯一 ObjectName 可以通過在此字元串後添加 ",name=manager's name" 形成。

另請參見:
常數欄位值

MEMORY_POOL_MXBEAN_DOMAIN_TYPE

public static final String MEMORY_POOL_MXBEAN_DOMAIN_TYPE
MemoryPoolMXBeanObjectName 中的域名和型別鍵屬性。MemoryPoolMXBean 的唯一 ObjectName 可以通過在此字元串後添加 ",name=pool's name" 形成。

另請參見:
常數欄位值
方法詳細資訊

getClassLoadingMXBean

public static ClassLoadingMXBean getClassLoadingMXBean()
返回 Java 虛擬機器的類別載入系統的管理 Bean。

返回:
Java 虛擬機器的 ClassLoadingMXBean 物件。

getMemoryMXBean

public static MemoryMXBean getMemoryMXBean()
返回 Java 虛擬機器的記憶體系統的管理 Bean。

返回:
Java 虛擬機器的 MemoryMXBean 物件。

getThreadMXBean

public static ThreadMXBean getThreadMXBean()
返回 Java 虛擬機器的執行緒系統的管理 Bean。

返回:
Java 虛擬機器的 ThreadMXBean 物件。

getRuntimeMXBean

public static RuntimeMXBean getRuntimeMXBean()
返回 Java 虛擬機器的運行時系統的管理 Bean。

返回:
Java 虛擬機器的 RuntimeMXBean 物件。

getCompilationMXBean

public static CompilationMXBean getCompilationMXBean()
返回 Java 虛擬機器的編譯系統的管理 Bean。如果 Java 虛擬機器沒有編譯系統,此方法將返回 null

返回:
Java 虛擬機器的 CompilationMXBean 物件,或者,如果 Java 虛擬機器沒有編譯系統,則返回 null

getOperatingSystemMXBean

public static OperatingSystemMXBean getOperatingSystemMXBean()
返回運行 Java 虛擬機器的作業系統的管理 Bean。

返回:
Java 虛擬機器的 OperatingSystemMXBean 物件。

getMemoryPoolMXBeans

public static List<MemoryPoolMXBean> getMemoryPoolMXBeans()
返回 Java 虛擬機器中的 MemoryPoolMXBean 物件列表。Java 虛擬機器可以有一個或多個記憶體池。可以在運行期間添加或刪除記憶體池。

返回:
MemoryPoolMXBean 物件列表。

getMemoryManagerMXBeans

public static List<MemoryManagerMXBean> getMemoryManagerMXBeans()
返回 Java 虛擬機器中的 MemoryManagerMXBean 物件列表。Java 虛擬機器可以有一個或多個記憶體管理器。可以在運行期間添加或刪除記憶體管理器。

返回:
MemoryManagerMXBean 物件列表。

getGarbageCollectorMXBeans

public static List<GarbageCollectorMXBean> getGarbageCollectorMXBeans()
返回 Java 虛擬機器中的 GarbageCollectorMXBean 物件列表。Java 虛擬機器可以有一個或多個 GarbageCollectorMXBean 物件。可以在運行期間添加或刪除 GarbageCollectorMXBean

返回:
GarbageCollectorMXBean 物件列表。

getPlatformMBeanServer

public static MBeanServer getPlatformMBeanServer()
返回平臺 MBeanServer。第一次調用此方法時,將首先通過調用 MBeanServerFactory.createMBeanServer 方法創建平臺 MBeanServer,然後通過使用類別描述中定義的 MXBean 名稱在此平臺 MBeanServer 中註冊平臺 MXBean。在後續的調用中,此方法將直接返回最初創建的平臺 MBeanServer

動態創建和銷毀的 MXBean(如記憶體管理器)將自動註冊到平臺 MBeanServer 和從中註銷。

如果設置了系統屬性 javax.management.builder.initial,將由指定的 MBeanServerBuilder 進行平臺 MBeanServer 創建。

建議也將此平臺用於註冊平臺 MXBean 之外的其他應用程序管理 Bean。這將允許所有 MBean 通過同一個 MBeanServer 發佈,從而能夠更方便地進行網路發佈和發現。應該避免平臺 MXBean 的名稱衝突。

返回:
平臺 MBeanServer;將在第一次調用此方法時註冊到平臺 MBeanServer 中的平臺 MXBean。
拋出:
SecurityException - 如果安全管理器和調用方不具有 MBeanServerFactory.createMBeanServer() 所需要的權限。
另請參見:
MBeanServerFactory, MBeanServerFactory.createMBeanServer()

newPlatformMXBeanProxy

public static <T> T newPlatformMXBeanProxy(MBeanServerConnection connection,
                                           String mxbeanName,
                                           Class<T> mxbeanInterface)
                                throws IOException
返回用於給定 MXBean 名稱的平臺 MXBean 介面的代理,以便通過給定 MBeanServerConnection 轉發其方法調用。

此方法等效於:

Proxy.newProxyInstance(mxbeanInterface.getClassLoader(), new Class[] { mxbeanInterface }, handler)
其中 handler 是一個 InvocationHandler,對 MXBean 介面的方法調用將排程到其上。此 handler 會在將 MXBean 資料型別的輸入參數轉發到 MBeanServer 之前將其轉換為其映射的開放型別,並將通過 MBeanServer 的 MXBean 方法調用的返回值由開放型別轉換為在 MXBean 介面中宣告的對應返回型別。

如果 MXBean 是通知發出者(即它實作了 NotificationEmitter),則 mxbeanInterfaceNotificationEmitter 都將由此代理實作。

註:

  1. 使用 MXBean 代理可以方便地遠端存取正在運行的虛擬機器的平臺 MXBean。所有對 MXBean 代理的方法調用都被轉發到 MBeanServerConnection,當連接器伺服器出現通信問題時,可能在其中拋出 IOException。如果使用代理遠端存取平臺 MXBean 的應用程序要存取 MBeanServerConnector 介面,則應該準備捕獲 IOException
  2. 當客戶端應用程序設計為遠端存取正在運行的虛擬機器(其版本與該應用程序運行其上的虛擬機器版本不同)的 MXBean 時,應當準備捕獲 InvalidObjectException,當 MXBean 代理接收到一個列舉常數的名稱,而該名稱客戶端應用程序中載入的列舉類別又缺少此列舉常數時,將拋出此異常。
  3. MBeanServerInvocationHandler 或其 newProxyInstance 方法不能用於為平臺 MXBean 創建代理。MBeanServerInvocationHandler 創建的代理物件不會處理類別規範中描述的平臺 MXBean 的屬性。

參數:
connection - 要轉發到的目標 MBeanServerConnection
mxbeanName - 要轉發到的 connection 的平臺 MXBean。mxbeanName 的格式必須為 ObjectName 的格式。
mxbeanInterface - 要由代理實作的 MXBean 介面。
拋出:
IllegalArgumentException - 如果
  • mxbeanName 沒有採用有效的 ObjectName 格式,或者
  • connection 中指定的 MXBean 不是由平臺提供的 MXBean,或者
  • 指定的 MXBean 未在 MBeanServerConnection 中註冊,或者
  • 指定的 MXBean 不是給定 mxbeanInterface 的實例
IOException - 如果在存取 MBeanServerConnection 時出現通信問題。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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