今月も引き続き管理ツールのVisualVMについて紹介していきます。

先月まで,VisualVMが標準で提供している機能について解説してきました。今月から,VisualVMを拡張する方法について解説します。

なお,VisualVMプロジェクトではVisualVM1.2がリリースされました。しかし,本記事では今まで通りJDKで提供されているVisualVMを使用していきます。

プラグインによる機能追加

アプリケーションを管理するには,さまざまな情報を駆使して行う必要があります。たとえば,GCのチューニングを行うには,ヒープの使用量だけでは情報が足りません。

HotSpot VMでは世代別GCを採用しているため,ヒープをヤング領域とオールド領域に分割して管理します。ヤング領域はさらにEden領域とSurvivor領域に分割します。オールド領域はTenured領域と呼ばれます。

これらの領域の使用量の推移などからGCのパラメータの最適値を探っていきます。

ところが,VisualVM単体ではヒープの使用量はわかるものの,Eden領域など個々の領域の使用量を参照することができません。

VisualVMは使えないので,他のツールを使いますか?

ちょっと待ってください。VisualVM単体では必要とする機能はないかもしれませんが,VisualVMはプラグインによって機能を追加することができるのです。もしかすると,必要な情報を参照できるプラグインが提供されているかもしれません。

たとえば,前述したヒープの個々の領域の使用量はVisual GCプラグインで参照することができます。

それでは,実際にVisual VMにプラグインを追加してみましょう。

まず,標準で提供されているプラグインを試してみます。標準で提供されているプラグインは表1に示した5種類です。

表1●標準で提供されているプラグイン
名称 説明
MBeansプラグイン JMXで定義されるMBeanの情報を参照するプラグイン
JConsoleプラグイン JConsoleのプラグインをVisualVMで使用可能にするプラグイン
Visual GCプラグイン GCの詳細情報を表示するプラグイン。もともと,jvmstatのツールとして提供さていた
Extensionsプラグイン 新しいJDKなどにVisualVMを対応させるプラグイン
Glassfishプラグイン Glassfishの管理を行うためのプラグイン

Glassfishプラグイン以外の4種類のプラグインは汎用に使うことができます。Glassfishプラグインだけは,Glassfish専用のプラグインとなります。

このようにプラグインには,汎用で使用できるプラグインと,特定のアプリケーションに特化したプラグインの2種類があります。ここではMBeansプラグイン,JConsoleプラグイン,Visual GCプラグインを試してみます。

なお,Extensionsプラグインだけは機能の追加はありませんが,VisualVMを将来のJDKやJava VMに対応させることができます。できれば,このプラグインもインストールしておくのがお勧めです。