JConsole で Java アプリの CPU・メモリ使用状況を確認する

JDK をインストールすると、標準で JConsole というものがついてくる。これを使うと、起動中の Java アプリの CPU やメモリの使用状況をリアルタイムに確認できる。

今回説明する環境は Windows 前提だが、Linux 系でも大差ない。

JDK のインストールフォルダから jconsole.exe を実行すれば、GUI 画面が起動し、起動中の Java アプリが一覧に表示される。これを選択すれば監視を初められる。

コマンドラインから Java のプロセス ID を指定して実行することもできる。Java アプリのプロセス ID は、同じく JDK に同梱されている Jps (jps.exe) で手軽に調べられる。

> jps
6184 JavaApp
7151 Jps

Jps は Jps 自身のプロセス ID も表示する (上の例だと 7151 は Jps 自身) ので、これを除外して見つければ良い。

タスクマネージャから探しても良いが、JVM に限って検索できるので便利。

そしてコマンドラインから JConsole を実行する。

> jconsole 6184

こんな感じ。

WebLogic Server を見たりする

コマンドプロンプトが開きっぱなしになる、通常のサーバ起動方法であれば、JVM プロセスが一覧に出てくるので、普通に JConsole を起動したときの一覧に出てくる。

Windows サービス化された WLS の場合は、サービスに隠蔽され、JVM がプロセスとして起動しているようには見えなくなってしまう。JVM 起動引数でデバッグ用のポートを開けたりして、リモート接続してやるとうまくいくらしい。残念ながらもう必要なくなったので試していないのだが、参考になりそうなページを置いておく。