矢印アイコン Contents 矢印アイコン
第 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と計測されたアプリケーションのパフォーマンスのモニターを可能にします。 JConsoleはJava SE 5.0プラットフォームで導入され、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 プラットフォームのバージョン8には、 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
矢印アイコン Contents 矢印アイコン

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