JavaVM のオプションにはまる

Tomcat の使っているメモリの状況を外部からモニタしたいと思って調べたところ、いまどきはいろいろと便利なオプションがあることがわかった。自分の脳内は Java 1.4.0 で止まっていたので、いい勉強になった。

まず一つは、JAVA_OPTS で設定する内容と、その出力先の関係。

  • -verbose:gc を付けるだけ。

勝手に GC の状況がげろげろ吐かれる。標準出力へ流れて行く。

  • -verbose:gc と -Xloggc:/some/where/gc.log の組合せ。

勝手に GC の状況がげろげろ吐かれる。指定したファイルへ流れて行く。ファイルの吐かれるディレクトリが存在しない(ファイルが作れない)場合、標準出力に流れて来るようだ。

  • -X:+PrintClassHistogram を付ける。

SIGQUIT (番号で言うと 3) を送ると、スレッドダンプとともにヒープの情報、クラスのヒストグラムが出力される。ヒストグラムは「インスタンス数」「サイズ」「名前」の一覧。出力は標準出力に送られるようだ。

  • -Xloggc:/some/where/gc.log と -X:+PrintClassHistogram の組合せ。

SIGQUIT (番号で言うと 3) を送ると、スレッドダンプとともにヒープの情報、クラスのヒストグラムが出力される。クラスのヒストグラムだけ、-Xloggc で指定したファイルへ吐かれる。スレッドダンプやヒープの情報は標準出力に送られる。

これらは Sun の JavaVM の話。
さて、本当に知りたいのは IBM の JavaVM で同等のことをする方法なんだが…、困ったものだ。