1. HOME »
  2. Java Tips »
  3. Technology & Programming

Technology & Programming Article

ソーシャルブックマークに登録 : Yahoo!ブックマークに登録 はてなブックマークに登録 del.icio.usに登録 newsing it!に登録 Buzzurlにブックマーク livedoorクリップに登録 Choix!にブックマーク イザ!ブックマーク

print 印刷用ページの表示

J2SE 5.0の新機能

第15回 JMXによるJVMの監視/管理機能を試す(1)──JMXのアーキテクチャとMBean

J2SE 5.0(JDK 5.0)には、アプリケーションの状態などを監視/管理するための機能が追加されている。この機能は、J2EE 1.4に導入されたJMX(Java Management Extensions)をさらに強化したものであり、JVMの状態を詳細に監視/管理できるといった特徴がある。今回から2回にわたり、この機能の概要とそれを実装したツールについて解説する。

2006年7月10日更新

text ●  青柳 龍也 津田塾大学情報科学科 http://cs.tsuda.ac.jp/

J2SE 5.0の監視/管理機能

 J2SE 5.0には、アプリケーションの状態などを監視/管理する(monitoring and management)ための機能が追加されている。この機能は、以下に示す3つのJSRに基づくものだ。

●JSR 3:JMX Specification
●JSR 160:JMX Remote API 1.0(JMXリモートAPI 1.0)
●JSR 174:Monitoring and Management Specification for the Java Virtual Machine(JVMの監視/管理)


 これらのうち、JSR 3の「JMX」は、アプリケーションやネットワークの監視/管理をJavaで行うための仕様である。具体的には、監視/管理のアーキテクチャ、デザイン・パターン、API、サービスなどを規定している。

 JSRの番号が3と小さいことからもわかるように、JMXは、かなり昔(2000年)に策定された仕様であり、エンタープライズ向けのJava EE(J2EE)のほうでは、J2EE 1.4ですでにこれが組み込まれていた。そのため、これまでJMXは、主にサーバ側で使われてきた。しかし、Javaの基本仕様であるJava SE(J2SE)にも追加されたことから、今後はクライアント/サーバを問わず使われていくことになるだろう。ちなみに、オープンソースのアプリケーション・サーバ「JBoss」では、そのアーキテクチャの基盤としてJMXを利用している。

 一方、JSR 160の「JMXリモートAPI」は、JMXの機能をネットワーク経由で別のマシンから利用するための標準APIの仕様である。トランスポートの方法は切り替え可能だが、Java RMI(Remote Method Invocation)のサポートが必須になっているので、普通はRMIを使うことになる。

 そして、JSR 174の「JVMの監視/管理」は、JMXの仕様に従ってJVMを監視/管理するための機能を定めたものである。この機能により、JVMがメモリなどのリソースをどの程度消費しているのかを調べ、JVMが正常な状態かどうかを確認することができる。J2SE 5.0の新機能としては、このJSR 174がメインになるであろう。ほかの2つのJSRは、JSR 174の導入に伴って組み込まれたと言ってもよいかもしれない。

 3つのJSRによって新たに導入されたパッケージは表1のとおりである。

表1:J2SE 5.0に導入された監視/管理関連のパッケージ
JSR パッケージ
JSR 3:JMX javax.management
javax.management.loading
javax.management.modelmbean
javax.management.monitor
javax.management.openmbean
javax.management.relation
javax.management.timer
JSR 160:JMXリモートAPI javax.management.remote
javax.management.remote.rmi
JSR 174:JVMの監視/管理 java.lang.management

 また、J2SE 5.0(JDK 5.0)では、上記のJSRに加えて、「jconsole」、「jps」、「jstat」、「jstatd」という4つの監視/管理ツールも組み込まれている。これらのツールは、いずれもJVMを監視/管理するためのものである。ただし、どのツールも“試験的”という位置づけになっているので、将来のJava SEではサポートされない可能性もある。これら4つのツールは、J2SE 5.0でJVMの監視/管理に関して何ができるのかを示すデモに近いものだと考えればよいだろう。

 なお、これら4つのツールのうち、「jconsole」はGUIツールであり、残りの3つはコマンドライン・ツールである。今回は、これらのうちjconsoleの機能の概要について後ほど説明することにする。

HotSpot JVMの性能監視ツール

 JDK 5.0に組み込まれた4つのツールは、本文中で説明したとおり、すべてJVMの監視/管理を行うためのツールだ。ただし、jconsoleを除く3つのツール(jps、jstat、jstad)は、実は、JVMの監視/管理方式について定義したJSR 174ではなく、「jvmstat」というHotSpot JVMの監視ツールに由来するものである。
 ちなみに、jvmstatには、jps、jstat、jstatdのほかに、「visualgc」というGUIベースのガーベジ・コレクション監視ツールも含まれている。J2SE 5.0には組み込まれなかったが、jvmstatのWebサイトから別途ダウンロードすれば利用可能なので、興味のある方は試してみるとよいだろう。
 jvmstatは、サンのHotSpot JVM専用の性能監視ツールである。したがって、jps、jstat、jstatdもHotSpot JVM専用のツールだということになる。
 それに対し、jconsoleはHotSpot JVM専用ではなく、すべてのJVMを監視/管理することができる汎用のツールである。ただし、jconsoleのローカル接続(本文参照)は、jvmstatが作成するファイルに依存しているため、ローカル接続だけはHotSpot JVM専用になる。

ページの先頭へ戻る