jps
jstatという2つのコマンドを使用する現在のJavaのヒープメモリの領域の使用状況がわかります
[root@yoshi3 init.d]# service tomcat5 start Starting tomcat5: [ OK ] [root@yoshi3 init.d]# netstat -an | grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN [root@yoshi3 init.d]# jps 10337 Bootstrap 10384 Jps [root@yoshi3 init.d]# jstat -gcutil 10337 1000 S0 S1 E O P YGC YGCT FGC FGCT GCT 0.00 58.12 3.22 44.79 51.70 11 0.022 0 0.000 0.022 0.00 58.12 3.22 44.79 51.70 11 0.022 0 0.000 0.022 0.00 58.12 3.22 44.79 51.70 11 0.022 0 0.000 0.022 0.00 58.12 3.22 44.79 51.70 11 0.022 0 0.000 0.022 0.00 58.12 3.22 44.79 51.70 11 0.022 0 0.000 0.022 0.00 58.12 3.22 44.79 51.70 11 0.022 0 0.000 0.022 0.00 58.12 3.22 44.79 51.70 11 0.022 0 0.000 0.022
まずはjpsコマンドで現在JVM上で稼働しているプロセス情報を取得します
jpsで返却される番号は VMIDと呼ばれるものになります
それをjstatコマンドに食わせることでそのVMIDのプロセスのメモリ状況を閲覧することができます
上記のjstatのコマンドはメモリ使用量の概要を表しています
「O」がヒープメモリのOld領域で
「E」がエデン領域となります
「E」は結構頻繁に値が小さくなったり大きくなったりしますが、「O」が一気に小さくなるのでフルGCが起きている証拠なので頻繁におきているとまずいです
まずいというのは言い換えると「アプリの実装がよくないということになります」
また、一番後ろの1000は一秒おきにストリーム表示してくれるパラメータです
他にもjstatのパラメータはいろいろあるようです
jstatの詳しいパラメータや表示される項目についてはsunの公式サイトがわかりやすいです
http://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/share/jstat.html