次のフラグで運用サーバーを実行しています: - XX:+HeapDumpOnOutOfMemoryError
昨夜、サーバーでヒープ エラーが発生したときに、java-38942.hprof ファイルが生成されました。システムの開発者はフラグを知っていましたが、そこから有用な情報を取得する方法がありませんでした。
何か案は?
次のフラグで運用サーバーを実行しています: - XX:+HeapDumpOnOutOfMemoryError
昨夜、サーバーでヒープ エラーが発生したときに、java-38942.hprof ファイルが生成されました。システムの開発者はフラグを知っていましたが、そこから有用な情報を取得する方法がありませんでした。
何か案は?
かなり高度なツールで本格的な調査を行いたい場合は、Eclipseの Memory Analyzer プロジェクト(SAP が提供) を参照してください。
あなたができることのいくつかは、メモリリークなどを見つけるのに驚くほど良いです - メモリ内オブジェクトに対して限定されたSQL(OQL)のフォームを実行することを含みます。
SELECT toString(firstName) FROM com.yourcompany.somepackage.User
完全に素晴らしい。
JHAT、JDKでデフォルトで提供されるJavaヒープ分析ツールを使用できます。これはコマンドラインですが、メモリの検査に使用するWebサーバー/ブラウザを起動します。最もユーザーフレンドリーではありませんが、少なくともあなたが行くほとんどの場所にすでにインストールされています。非常に便利なビューは、一番下にある「ヒープヒストグラム」リンクです。
元: jhat -port 7401 -J-Xmx4G dump.hprof
jhat
OQLを「これらの日」も実行できます(下のリンク「OQLを実行」)
Netbeans Profiler またはVisual VMスタンドアロン ツールからHeapWalkerを使用することもできます。Visual VM はスタンドアロンであるため、JHAT の優れた代替手段ですが、JHAT よりもはるかに使いやすいです。
Visual VM を完全に使用するには、Java 6+ が必要です。
Eclipse Memory Analyzerを入手してください。無料でこれ以上のものはありません。
JHAT は「おもちゃのアプリケーション」にのみ使用できます
YourKit Java Profiler もそれらを処理しているようです。