矢印アイコン前の項目 目次 次へ矢印アイコン
第 1 章

Java SE 監視および管理の概要

この章では、Java Platform, Standard Edition (Java SE プラットフォーム) に監視と管理の両サービスを提供する機能およびユーティリティーを説明します。ここで紹介する機能の詳細については、このガイドの次の章を参照してください。

主な監視および管理機能

Java SE プラットフォームには、重要な監視および管理機能が用意されています。これらの機能は、大きく 4 つに分類されます。

  • Java 仮想マシン (Java VM) のインストゥルメンテーション。

  • 監視および管理アプリケーションプログラミングインタフェース (API)。

  • 監視および管理ツール。

  • Java Management Extensions (JMX) テクノロジ。

これらの監視および管理機能の分類についての詳細は、次のセクションを参照してください。

Java VM インストゥルメンテーション

Java VM は、監視および管理を目的として計測され、ローカルアクセスやリモートアクセスを実現する組み込み型の (または、追加設定不要 (アウトオブボックス) な) 管理機能を有効にします。詳細は、第 2 章「JMX テクノロジを使用する監視と管理」第 5 章「SNMP 監視と管理」を参照してください。

Java VM には、JMX 仕様に準拠した管理アプリケーションで使用されるプラットフォーム MBean サーバーとプラットフォーム MBean が用意されています。これらは、監視および管理 API (次のセクションに記載) の実装です。プラットフォーム MXBean と MBean サーバーについては、プラットフォーム MXBeanプラットフォーム MBean サーバーを参照してください。

サンプルコードは、JDK_HOME/demo/management ディレクトリに格納されています。ここで JDK_HOME は Java Development Kit (JDK) がインストールされているディレクトリです。

監視および管理 API

java.lang.management パッケージでは、Java VM の監視および管理を行うインタフェースを提供します。この API では、次の種類の情報にアクセスします。

  • ロードされたクラスと実行中のスレッドの数。

  • Java VM の稼働時間、システムプロパティー、VM 入力引数。

  • スレッド状態、スレッドコンテンション統計、ライブスレッドのスタックトレース。

  • メモリー消費。

  • ガベージコレクションの統計。

  • ローメモリーの検出。

  • オンデマンドデッドロックの検出。

  • オペレーティングシステム情報。

java.lang.management API に加え、java.util.logging.LoggingMXBean API では、ロギングの監視および管理が可能です。

監視および管理ツール

Java SE プラットフォームには、JConsole と呼ばれる監視用グラフィカルツールが用意されています。JConsole には JMX API が実装されており、パフォーマンスを最大限に発揮させるための情報を提供することにより、Java VM と計測されたアプリケーションのパフォーマンス監視を可能にします。J2SE プラットフォームのバージョン 5.0 に用意されている JConsole は、Java SE プラットフォームのバージョン 6 において公式にサポートされる機能となりました。

この 2 つの Java SE プラットフォームのリリース間で JConsole に追加された拡張機能の一部は、次のとおりです。

  • JConsole プラグインサポート: アプリケーションの MBean にアクセスする際に必要なカスタムタブを追加するなど、JConsole で実行される独自のプラグイン構築が可能となります。

  • 動的接続機能: Java SE プラットフォームのバージョン 6 に追加された Attach API をサポートするアプリケーションに JConsole が接続可能となります。

  • 強化されたユーザーインタフェース: データアクセスをさらに簡単にします。

  • 新しい「概要」タブおよび「VM の概要」タブ: 使用中の Java VM に関する全体情報をよりわかりやすく表示します。

  • HotSpot 診断 MBean: 実行時にヒープダンプを要求し、また一部の VM オプションの設定変更を行う API が用意されています。

  • 強化された MBean プレゼンテーション: MBean の操作や属性に対するアクセスを簡単にします。

JConsole の全般については、第 3 章「JConsole の使用」を参照してください。

ほかのコマンド行ツールは、Java SE プラットフォームでも使用することができます。詳細は、JDK 開発ツールのドキュメント内にある「監視ツール」セクションを参照してください。

Java Management Extensions (JMX) テクノロジ

Java SE プラットフォームのバージョン 6 では、JMX 仕様のバージョンが 1.4 となります。JMX API では、監視および管理を行うアプリケーションを計測することができます。RMI コネクタでは、JConsole などからこの計測へのリモートアクセスが可能となります。

詳細は、Java SE プラットフォームの JMX テクノロジのドキュメントを参照してください。JMX API の主なコンポーネントの概要については、次のセクションを参照してください。

MBean とは

JMX テクノロジの MBean は、管理対象 Bean、すなわち管理されるリソースを表す Java オブジェクトです。MBean には管理インタフェースが設けられており、このインタフェースは次の要素で構成されます。

  • 読み出しや書き込み可能な名前付きおよび型付き属性。

  • 呼び出し可能な名前付きおよび型付き操作。

  • MBean が送出可能な型付き通知。

たとえば、アプリケーションの構成を表す MBean には、キャッシュサイズなどのさまざまな構成パラメータを表す属性が用意されています。CacheSize 属性を読み込むことにより、現在のキャッシュサイズが返されます。CacheSize の書き込みを行うと、このキャッシュサイズが更新され、アプリケーションの実行中の処理を変更できる可能性があります。save などの操作では、現在の構成を持続的に保存することができます。構成の変更を行うときは、MBean で ConfigurationChangedNotification などの通知が送られます。

MBean は、標準または動的なものとなります。標準 MBean は、JavaBeans コンポーネントモデルに由来する、設計パターンに準拠した Java オブジェクトです。動的 MBean では、実行時にその管理インタフェースを定義します。最近では、MXBean と呼ばれる新たな形式の MBean も Java プラットフォームに追加されています。

  • 標準 MBean では、その属性と操作を通じて直接管理を行うリソースが公開されます。属性は、「getter」メソッドや「setter」メソッドを通じて公開されます。操作は、クラスのその他のメソッドのうち、管理側で利用可能なメソッドです。これらのメソッドはすべて MBean インタフェースに静的に定義されており、JMX エージェントでは、イントロスペクションを通じてこれらのメソッドを確認できます。これが新しいリソースを管理可能にするいちばんわかりやすい方法です。

  • 動的 MBean は、その管理インタフェースを実行時に定義する MBean です。たとえば、構成 MBean は、XMLファイルの解析により、公開する属性の名前と型を決定できます。

  • MXBean は新しいタイプの MBean であり、定義済みの型セットだけを参照する MBean のコーディングを簡単に行う方法が提供されます。この方法なら、リモートクライアントを含むクライアントは、MBean の型を示すモデル固有のクラスにアクセスしなくても、MBean を利用できます。次に説明するプラットフォーム MBean は、すべて MXBean です。

MBean サーバー

有効にするには、MBean を MBean サーバーに登録する必要があります。MBean サーバーは、MBeanのリポジトリです。各 MBean は、MBean サーバー内の一意の名前を使用して登録されます。MBean には、通常 MBean サーバーを経由してのみアクセスします。すなわち、コードでは MBean に直接アクセスするのではなく、名前を使用することにより、MBean サーバー経由で MBean にアクセスします。

Java SE プラットフォームには、組み込み型のプラットフォーム MBean サーバーが含まれています。詳細は、第 4 章「プラットフォーム MBean サーバーとプラットフォーム MXBean の使用」を参照してください。

MBean の作成および登録

MBean は 2 とおりの方法で作成できます。1 つ目の方法では、MBean である Java オブジェクトを作成し、registerMBean メソッドでそのオブジェクトを MBean サーバーに登録します。もう 1 つの方法では、createMBean メソッドの 1 つを使用して単一操作で MBean の作成および登録を行います。

registerMBean メソッドは、ローカルでの使用を目的とした単純な構造となっていますが、リモートで使用することはできません。createMBean メソッドは、リモートで使用することができますが、場合によってクラスローディングの問題に注意を払う必要があります。MBean サーバーで MBeanRegistration インタフェースを実装している状態で MBean をその MBean サーバーに登録またはそのサーバーから登録解除するときは、その MBean でアクションを実行することができます。

アプリケーションの計測

JMX API で管理用アプリケーションを計測する一般的な手順については、ほかのドキュメントを参照してください。詳細は、Java Management Extensions (JMX) テクノロジのドキュメントを参照してください。

プラットフォーム MXBean

プラットフォーム MXBean は、Java Runtime Environment (JRE) の Java VM とその他のコンポーネントを監視および管理する MBean です。各 MXBean では、クラスローディングシステム、Just In Time (JIT) コンパイルシステム、ガベージコレクタなどの VM 機能の一部をカプセル化します。

表 1-1 では、すべてのプラットフォーム MXBean とそれぞれのプラットフォーム MXBean で管理する VM の状態を一覧で示します。各プラットフォーム MXBean には、プラットフォーム MBean サーバーの登録に必要な一意の javax.management.ObjectName があります。Java VM では、それぞれの MXBean のインスタンスの数が、表に示すように MXBean の機能に応じて 0、1、またはそれ以上となります。

表 1-1 プラットフォーム MXBean

インタフェース

管理下にある VM の区分

オブジェクト名

VM ごとのインスタンス数

ClassLoadingMXBean

クラスローディングシステム

java.lang:type= ClassLoading

1

CompilationMXBean

コンパイルシステム

java.lang:type= Compilation

0 または 1

GarbageCollectorMXBean

ガベージコレクタ

java.lang:type= GarbageCollector、name=collectorName

1 個以上

LoggingMXBean

ロギングシステム

java.util.logging:type =Logging

1

MemoryManagerMXBean (GarbageCollectorMXBean のサブインタフェース)

メモリープール

java.lang:typeMemoryManager、name=managerName

1 個以上

MemoryPoolMXBean

メモリー

java.lang:type= MemoryPool、name=poolName

1 個以上

MemoryMXBean

メモリーシステム

java.lang:type= Memory

1

OperatingSystemMXBean

基盤となるオペレーティングシステム

java.lang:type= OperatingSystem

1

RuntimeMXBean

ランタイムシステム

java.lang:type= Runtime

1

ThreadMXBean

スレッドシステム

java.lang:type= Threading

1

プラットフォーム MXBean (LoggingMXBean は除く) の詳細については、java.lang.management パッケージの API リファレンスに記載されているパッケージの解説を参照してください。LoggingMXBean の詳細については、java.util.logging の API リファレンスを参照してください。

プラットフォーム MBean サーバー

プラットフォーム MBean サーバーは、同一の Java VM 内で実行する、個々に管理されたコンポーネントにより共有することができます。プラットフォーム MBean サーバーには、ManagementFactory.getPlatformMBeanServer() メソッドを使用してアクセスすることができます。このメソッドに対する 1 回目の呼び出しにより、プラットフォーム MBean サーバーが作成され、次にこのサーバーの一意のオブジェクト名を使用してプラットフォーム MXBean の登録が行われます。そのあと、このメソッドは、最初に作成したプラットフォーム MBeanServer のインスタンスを返します。

動的に作成/破棄された MXBean (たとえば、メモリープールやマネージャー) は、プラットフォーム MBean サーバーで自動的に登録や登録解除が行われます。システムプロパティー javax.management.builder.initial の設定が行われている場合、プラットフォーム MBean サーバーは、指定の MBeanServerBuilder を使用して作成されます。

プラットフォーム MBean サーバーを使用してプラットフォーム MXBean の横にあるほかの MBean の登録を行うことができます。これにより、MBean はすべて同一の MBean サーバーを介して公開され、ネットワークはより簡単に公開したり、検出することができるようになります。

spacer img
矢印アイコン前の項目 目次 次へ矢印アイコン

Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.