254

次のフラグで運用サーバーを実行しています: - XX:+HeapDumpOnOutOfMemoryError

昨夜、サーバーでヒープ エラーが発生したときに、java-38942.hprof ファイルが生成されました。システムの開発者はフラグを知っていましたが、そこから有用な情報を取得する方法がありませんでした。

何か案は?

4

7 に答える 7

239

かなり高度なツールで本格的な調査を行いたい場合は、Eclipseの Memory Analyzer プロジェクト(SAP が提供) を参照してください。

あなたができることのいくつかは、メモリリークなどを見つけるのに驚くほど良いです - メモリ内オブジェクトに対して限定されたSQL(OQL)のフォームを実行することを含みます。

SELECT toString(firstName) FROM com.yourcompany.somepackage.User

完全に素晴らしい。

于 2008-10-09T04:41:31.313 に答える
84

JHAT、JDKでデフォルトで提供されるJavaヒープ分析ツールを使用できます。これはコマンドラインですが、メモリの検査に使用するWebサーバー/ブラウザを起動します。最もユーザーフレンドリーではありませんが、少なくともあなたが行くほとんどの場所にすでにインストールされています。非常に便利なビューは、一番下にある「ヒープヒストグラム」リンクです。

元: jhat -port 7401 -J-Xmx4G dump.hprof

jhatOQLを「これらの日」も実行できます(下のリンク「OQLを実行」)

于 2008-10-09T04:17:01.393 に答える
38

Netbeans Profiler またはVisual VMスタンドアロン ツールからHeapWalkerを使用することもできます。Visual VM はスタンドアロンであるため、JHAT の優れた代替手段ですが、JHAT よりもはるかに使いやすいです。

Visual VM を完全に使用するには、Java 6+ が必要です。

于 2008-10-09T16:41:06.120 に答える
15

Eclipse Memory Analyzerを入手してください。無料でこれ以上のものはありません。

JHAT は「おもちゃのアプリケーション」にのみ使用できます

于 2008-10-09T08:18:40.267 に答える
11

YourKit Java Profiler もそれらを処理しているようです。

于 2010-11-02T10:35:48.283 に答える