JavaのモニタリングとトラブルシューティングのBOF
[BOF-4724]Monitoring and Troubleshooting Java? Platform Applications with JDK Software
一つ前のセッションと同じ内容だけど、BOFだからきっと深い内容に、、、と
期待して入ったら、こっちの方が初心者向けだった。BOFのくせに(><)
とりあえず内容を書いちゃうと、、、
- SunのJVMが提供しているデッドロック検出機能は、VisualVMとjstackで確認できる。
- VisualVMの「Enable Heap Dump on OOME」を使えば、OutOfMemory時にヒープダンプが取れる。
- メモリリークの見つけ方。
- メモリ使用量の推移を見る(jstat)
- ヒープヒストグラムから怪しい箇所を見つける(jstat)
- ヒープダンプを取る(jmap)
- もちろんVisualVMでもOK
- GC走ってないだけなものをリークと勘違いするな。VisualVMかjconsoleでGCさせろ。
という感じ。
ちなみにスピーカーの片方(デモ中心だった人)は、VisualVMの作者だったそうなので、
前々から疑問だった質問をしてみた。
Q : VisualVMのプロセスツリーに出てくるアイコンって、どうやって取ってるの?
A : Mainクラスを解析して判断して、これはTomcatだ、これはNetBeansだって振り分けてるんだ。
次のバージョンからは、-Dオプションでプロセス名ともども指定できるようになるとか。
誰が使うねん、そんな機能。