パッケージ java.lang.management
プラットフォームMXBean
プラットフォームMXBeanは、JMXインストゥルメンテーション仕様に適合する管理Beanであり、基本データ型のセットだけを使用します。 各プラットフォームMXBeanは、一意の名前を持つPlatformManagedObject
です。
ManagementFactory
ManagementFactory
クラスは、Javaプラットフォームの管理ファクトリ・クラスです。 このクラスは、JavaプラットフォームのMXBeanを取得する一連のstaticファクトリ・メソッドを提供し、アプリケーションでMXBeanに直接アクセスできるようにします。
プラットフォームMBeanServerにアクセスするには、getPlatformMBeanServer
メソッドを使用します。 このメソッドの1回目の呼出しで、プラットフォームMBeanServerを作成し、プラットフォームMXBeanを含むすべてのプラットフォームMXBeanを登録します。 各プラットフォームMXBeanは、管理インタフェースの仕様で定義されている一意の名前で登録されます。 これは単一のMBeanServerであり、同じJava仮想マシン内で実行されているさまざまな管理対象コンポーネントによって共有されることがあります。
相互運用性
実行中の仮想マシンの管理アプリケーションとプラットフォームMBeanServerは、プラットフォームMXBeanインタフェースで使用されるクラスを必要とすることなく相互運用できます。 JMXコネクタ・サーバーとコネクタ・クライアントの間で転送されるデータ型は、JMX 公開型であり、これによってバージョン間の相互運用が可能です。 MXBeanインタフェースで使用されるデータ型は、MBeanServerインタフェースによるアクセス時に、公開型にマップされます。 詳細は、「MXBean仕様」を参照してください。
MXBeanにアクセスする方法
アプリケーションは、次の方法でJava仮想マシンのインストゥルメンテーションとランタイムを監視できます。
1. MXBeanインタフェースへの直接アクセス
- 実行中のJava仮想マシンでローカルにMXBeanインスタンスを取得します。
RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean(); // Get the standard attribute "VmVendor" String vendor = mxbean.getVmVendor();
あるいは、
getPlatformMXBean
またはgetPlatformMXBeans
メソッドを呼び出します。RuntimeMXBean mxbean = ManagementFactory.getPlatformMXBean(RuntimeMXBean.class); // Get the standard attribute "VmVendor" String vendor = mxbean.getVmVendor();
- 指定されたMBeanServerにメソッド呼出しを転送するMXBeanプロキシ・インスタンスを構築します。
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.getPlatformMXBean
(mbs, RuntimeMXBean.class); // Get standard attribute "VmVendor" String vendor = proxy.getVmVendor();プロキシは通常、リモートのJava仮想マシン内のMXBeanにアクセスするために使用されます。 MXBeanプロキシは次の方法で作成することもできます。
RuntimeMXBean proxy =
ManagementFactory.newPlatformMXBeanProxy
(mbs, ManagementFactory.RUNTIME_MXBEAN_NAME, RuntimeMXBean.class);
2. MBeanServerを介したMXBeanインタフェースへの間接アクセス
プラットフォームMBeanServer
でMXBeanにローカル・アクセスするか、または特定のMBeanServerConnection
でMXBeanにリモート・アクセスします。 MXBeanの属性や操作で使用されるのはJMX公開型だけですが、これには、OpenType
に定義された基本データ型、CompositeData
、およびTabularData
が含まれます。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 ... }
プラットフォームの拡張
Java仮想マシンの実装では、標準の管理インタフェースを拡張してプラットフォーム固有のメトリックスと管理操作を追加するプラットフォーム依存のインタフェースを定義することで、管理インタフェースにプラットフォームの拡張を追加できます。 ManagementFactory
クラスのstaticファクトリ・メソッドは、プラットフォーム拡張機能を備えたMXBeanを返します。
ベンダーの名前などベンダー固有の接頭辞を使ってプラットフォーム固有の属性に名前を付けて、標準管理インタフェースの将来の拡張と、このプラットフォーム拡張の間で属性の名前の衝突が発生しないようにすることをお薦めします。 標準管理インタフェースに対する将来の拡張が、管理インタフェースの新しい属性を定義し、属性名がベンダー固有の属性の名前と同じことがわかった場合、バージョニングと互換性の問題に対処するために、ベンダー固有の属性にアクセスしているアプリケーションを変更する必要があります。
以下の例は、プラットフォーム拡張の属性にアクセスする方法を示しています。
1) Oracle固有のMXBeanインタフェースへの直接アクセス
List<com.sun.management.GarbageCollectorMXBean> mxbeans = ManagementFactory.getPlatformMXBeans(com.sun.management.GarbageCollectorMXBean.class); for (com.sun.management.GarbageCollectorMXBean gc : mxbeans) { // Get the standard attribute "CollectionCount" String count = mxbean.getCollectionCount(); // Get the platform-specific attribute "LastGcInfo" GcInfo gcinfo = gc.getLastGcInfo(); ... }
2)プロキシ経由でMBeanServer
を使った、Oracle固有のMXBeanインタフェースへのアクセス
MBeanServerConnection mbs; // Connect to a running JVM (or itself) and get MBeanServerConnection // that has the JVM MXBeans registered in it ... List<com.sun.management.GarbageCollectorMXBean> mxbeans = ManagementFactory.getPlatformMXBeans(mbs, com.sun.management.GarbageCollectorMXBean.class); for (com.sun.management.GarbageCollectorMXBean gc : mxbeans) { // Get the standard attribute "CollectionCount" String count = mxbean.getCollectionCount(); // Get the platform-specific attribute "LastGcInfo" GcInfo gcinfo = gc.getLastGcInfo(); ... }
ほかで指定がない場合、null
引数をこのパッケージの任意のクラスまたはインタフェースのメソッドまたはコンストラクタへ渡すと、NullPointerException
がスローされます。
java.lang.management APIはスレッドセーフです。
- 導入されたバージョン:
- 1.5
-
インタフェースのサマリー インタフェース 説明 BufferPoolMXBean ClassLoadingMXBean Java仮想マシンのクラス・ローディング・システムの管理インタフェースです。CompilationMXBean Java仮想マシンのコンパイル・システムの管理インタフェースです。GarbageCollectorMXBean Java仮想マシンのガベージ・コレクションの管理インタフェースです。MemoryManagerMXBean メモリー・マネージャの管理インタフェースです。MemoryMXBean Java仮想マシンのメモリー・システムの管理インタフェースです。MemoryPoolMXBean メモリー・プールの管理インタフェースです。OperatingSystemMXBean Java仮想マシンを実行しているオペレーティング・システムの管理インタフェースを返します。PlatformLoggingMXBean ロギング機能の管理インタフェースです。PlatformManagedObject プラットフォーム管理対象オブジェクトとは、Javaプラットフォーム内の1つのコンポーネントを監視および管理するためのJMX MXBeanのことです。RuntimeMXBean Java仮想マシンの実行時システムの管理インタフェースです。ThreadMXBean Java仮想マシンのスレッド・システムの管理インタフェースです。 -
クラスのサマリー クラス 説明 LockInfo ロックに関する情報です。ManagementFactory ManagementFactory
クラスは、Javaプラットフォームの管理対象Beanを取得するためのファクトリ・クラスです。ManagementPermission SecurityManagerによって実行されるコードがJavaプラットフォームの管理インタフェースで定義されたメソッドを呼び出すときに、SecurityManagerがチェックするアクセス権です。MemoryNotificationInfo メモリー通知に関する情報です。MemoryUsage MemoryUsage
オブジェクトは、メモリー使用量のスナップショットを表します。MonitorInfo オブジェクトのモニター・ロックに関する情報です。ThreadInfo スレッド情報です。 -
列挙型のサマリー 列挙型 説明 MemoryType メモリー・プール
のタイプです。