次のフラグを使用して運用サーバーを実行しています:-XX:+ HeapDumpOnOutOfMemoryError
昨夜、サーバーでヒープエラーが発生したときにjava-38942.hprofファイルが生成されました。システムの開発者はフラグを知っていましたが、フラグから有用な情報を取得する方法がないことがわかりました。
何か案は?
次のフラグを使用して運用サーバーを実行しています:-XX:+ HeapDumpOnOutOfMemoryError
昨夜、サーバーでヒープエラーが発生したときにjava-38942.hprofファイルが生成されました。システムの開発者はフラグを知っていましたが、フラグから有用な情報を取得する方法がないことがわかりました。
何か案は?
回答:
かなり高度なツールを使用して真剣な取り組みを行う場合は、SAPから提供されたEclipseのMemory Analyzerプロジェクトをご覧ください。
あなたができることのいくつかは、メモリリークなどを見つけるのに驚くほど良いことです-インメモリオブジェクトに対して制限されたSQL(OQL)のフォームを実行することを含みます。
SELECT toString(firstName)FROM com.yourcompany.somepackage.User
完全に素晴らしい。
JDKでデフォルトで提供されるJavaヒープ分析ツールであるJHATを使用できます。コマンドラインですが、メモリの調査に使用するWebサーバー/ブラウザーを起動します。ユーザーフレンドリーではありませんが、少なくとも、ほとんどの場所にすでにインストールされています。非常に便利なビューは、一番下にある「ヒープヒストグラム」リンクです。
例: jhat -port 7401 -J-Xmx4G dump.hprof
jhat
OQLを「今日」実行することもできます(下部リンク「OQLを実行」)
Netbeans ProfilerまたはVisual VMからHeapWalkerを使用することもできますスタンドアロンツールます。ビジュアルVMはスタンドアロンであるため、JHATの優れた代替手段ですが、JHATよりもはるかに使いやすいです。
Visual VMを完全に使用するには、Java 6以降が必要です。
jvisualvm.exe
にJAVASDK/bin
フォルダ
Eclipse Memory Analyzerを入手してください。そこに良いものは何もありません、それは無料です。
JHATは「おもちゃのアプリケーション」でのみ使用できます
heapdumpのカスタム分析を行う場合は、次の方法があります。
このライブラリは高速ですが、Javaで分析コードを記述する必要があります。
ドキュメントから:
私はVisualVMを好みます。VisualVMで気に入っている機能の1つは、ヒープダンプの比較です。ヒープダンプ分析を行っている場合、クラッシュの原因を突き止めるにはさまざまな方法があります。私が便利だと思った方法の1つは、正常なヒープダンプと異常なヒープダンプを比較することです。
以下は、そのために実行できる手順です。
リンク:https : //visualvm.github.io