JconsoleでVMの状態が知りたい

JDKに付属しているVMのプロファイラーにJconsoleというものがあります。
これはJDK1.5から付属するようになったのですが、これまで使用する機会がありませんでした。
環境変数JAVA_HOMEのbinの下にjconsole.exeはあります。

Intra-martではデバッグサーバという開発用PCで起動できるサーバがあるのですが、これを使用する場合は、
以下のようにローカルプロセスにデバッグサーバで起動したサーバのプロセスが表示されます。

しかし、サーバ(Intra-mart)がサービスで稼働している環境だと

のように表示されてしまいます。
はっきりしたことは言えないのですが、サービスで起動している場合はプロセスの所有者がSYSTEMになり
この状態ではローカルプロセスの一覧にでてこないようです。
そこで、リモートプロセスでつなぐために以下の設定を行います。

Intra-martのVM起動パラメータ(imart.xml)に以下の4つを追加して起動します。
ポートは好きな物をご指定ください。


-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=XXXX
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

接続ボタン押下後、以下のような画面になります。

ちなみに、上は以下のようなVMパラメータでIntra-martを稼働し、5分くらい経過したあとのグラフです。
5分間は誰もアクセスしていません。

-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=128m
-Djava.awt.headless=true
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=7900
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

さて、Eden,Survivor,Tenureの割合はどうなっているかと言うと

Eden Survivor Tenure
279,616kb 34,944kb 699,072kb

となっています。
SurvivorRatioは今回のようにVMパラメータに何も指定しないと8になるようでした。

今度はパラメータを変更してしばらく放置し、グラフを見てみます。


-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=128m
-XX:NewSize=320m -XX:MaxNewSize=320m
-XX:SurvivorRatio=2 -XX:TargetSurvivorRatio=80
-Djava.awt.headless=true
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=7900
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
すると以下のような割合になります。

Eden Survivor Tenure
163,840kb 81,920kb 720,896kb

ヒープメモリのトータルは変わらないのですが、Eden、Survivor、Tenureの使用量の変遷が
かなり違ってくるのが分かります。いつもこの設定が正解ということがないのが難しいですね。