前提・実現したいこと
jmapの出力ファイルをvisualvmを使って解析しようとしているのですが、
この手のツールを使ったことが無いので、助言いただけるとありがたいです。
発生している問題・エラーメッセージ
[背景]
サーバーでjavaアプリケーションを運用しているのですが、たまにアプリケーションが落ちます。
ログファイルなどを見ますが、ログにはエラーメッセージなどは出力されていません。
サーバーは8GBのメモリを持っていますが、常にメモリ使用率が90%を超えている状態です。(その他のリソースは余裕ある状態です)
psやtopでメモリを消費するプロセスを調べると、該当のjavaアプリケーションがかなり消費しています。
このことからjvmのメモリ使用に原因がありそうだと見て、jmapの出力を調べようとしています。
サーバでファイルを出力した時のコマンドは以下のようなものです。
shell
1$ jmap -F -dump:format=b,file=<ファイル名> <プロセスID>
出力されたファイルを自分のローカルPCにダウンロードし、visualvmを使って問題点を探そうとしています。
visualvmでクラスやインスタンスの数やデータサイズを見ることはできますが、原因を見つけることができていません。
(自分がvisualvmを初めてつかうので、使い方などをよく分かっていないのもあると思います)
[実際のvisualvmの画面]
この図を見るに、byte[]型の変数が凄まじい数になっていることは分かるのですが、ここからどう調べたらいいのかが分かりません。
たとえば、「何のメソッドや関数がこの変数を生じているか」を探し出すことは可能でしょうか?
アドバイスでもありがたいです。何か、「こうすればいいよ」ということがあれば教えてください。
よろしくお願いします。
あなたの回答
tips
プレビュー