web-dev-qa-db-ja.com

JBossのヒープダンプにHeapDumpOnOutOfMemoryErrorパラメーターを使用する

アプリケーションでメモリ不足エラーが発生したときにヒープダンプを取得するために、JBoss起動スクリプトにJVM起動オプションに-XX:+HeapDumpOnOutOfMemoryErrorパラメーターを追加できると言われました。このデータがどこにダンプされるのだろうと思っていましたか?コンソールだけですか、それともログファイルですか?コンソールのみの場合、コンソールからUnixサーバーにログインしていない場合はどうなりますか?

172
EdC

Oracleのドキュメント が言っていることは次のとおりです。

デフォルトでは、上記の例のように、VMの作業ディレクトリにあるJava _pid。hprofというファイルにヒープダンプが作成されます。 -XX:HeapDumpPath=オプションを使用して、代替ファイル名またはディレクトリを指定できます。たとえば、-XX:HeapDumpPath=/disk2/dumpsを指定すると、/disk2/dumpsディレクトリにヒープダンプが生成されます。

234
Matt Solnit

このダンプは、UNIXコンソールから表示できます。

ヒープダンプのパスは、上記の変数を配置した直後に変数として提供されます。

例えば。:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${DOMAIN_HOME}/logs/mps"

上記のパスのコンソールからダンプを表示できます。

「VMの作業ディレクトリ」が何を意味するのかを解読するのは難しいと感じました。私の例では、Java Service Wrapperプログラムを使用してjarを実行していました。ダンプファイルは、ラッパープログラムを配置したディレクトリに作成されました。 c:\ myapp\bin。私がこれを発見した理由は、ファイルが非常に大きくなる可能性があり、その場所を発見する前にハードドライブがいっぱいになるためです。

3
B5A7

「-XX:HeapDumpPath」オプションを使用していない場合、デフォルトでJBoss EAP/Asの場合、ヒープダンプファイルは「JBOSS_HOME/bin」ディレクトリに生成されます。

2