JavaTM 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 は、そのプラットフォームの単一のコンポーネントのための管理インタフェースを定義する「管理ビーン」であり、ManagementFactory クラスで指定されます。

アプリケーションは Java 仮想マシンのインストゥルメンテーションを監視し、次の方法で特定の特性を管理できます。

以下では、さまざまな方法で MXBean にアクセスするいくつかのを示します。

ManagementFactory

ManagementFactory クラスは、Java プラットフォームの管理ファクトリクラスです。このクラスは、Java プラットフォームの MXBean を取得する一連の static ファクトリメソッドを提供し、アプリケーションで MXBean に直接アクセスできるようにします。

platform MBeanServergetPlatformMBeanServer メソッドでアクセスできます。このメソッドの 1 回目の呼び出しで、プラットフォーム MBeanServer を作成し、@link java.util.logging.LoggingMXBean} などその他のパッケージに定義されているプラットフォーム MXBean を含む、すべてのプラットフォーム MXBean を登録します。{各プラットフォーム MXBean は、ObjectName を構築するために ManagementFactory クラスで定義されている一意の名前で登録されます。これは単一の MBeanServer であり、同じ Java 仮想マシン内で実行されているさまざまな管理対象コンポーネントによって共有されることがあります。

相互運用性

実行中の仮想マシンの管理アプリケーションとプラットフォーム MBeanServer は、プラットフォーム MXBean インタフェースで使用されるクラスを必要とすることなく相互運用できます。JMX コネクタサーバーとコネクタクライアントの間で転送されるデータ型は、JMX open typesであり、これによってバージョン間の相互運用が可能です。

MXBean インタフェースで使用されるデータ型は、MBeanServer インタフェースによるアクセス時に、公開型にマップされます。データ型のマッピングは、ManagementFactory クラスで指定されます。

MXBean にアクセスする方法

管理インタフェースにアクセスするには、以下の 3 とおりの方法があります。

  1. 同じ Java 仮想マシン内で MXBean のメソッドを直接呼び出す
       RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean();
    
       // Get the standard attribute "VmVendor"
       String vendor = mxbean.getVmVendor();
    
    
  2. 実行中の仮想マシンのプラットフォーム MBeanServer に接続している MBeanServerConnection を介する
  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 クラスの static ファクトリメソッドは、プラットフォーム拡張で 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) Sun 固有の MXBean インタフェースへの 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
       ...
   }

ほかで指定がない場合、null 引数をコンストラクタ、またはこのパッケージの任意のクラスまたはインタフェースのメソッドへ渡すと NullPointerException がスローされます。

java.lang.management API はスレッドセーフです。

導入されたバージョン:
1.5
関連項目:
JMX Specification.

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。