-XX:+HeapDumpOnOutOfMemoryError
アプリケーションでメモリ不足エラーが発生したときに、ヒープダンプを取得するために、JVM起動オプションにパラメーターを私のJBoss起動スクリプトに追加できると言われました。このデータがどこにダンプされるのかと思っていましたか?それはコンソールだけですか、それともログファイルですか?コンソールのみの場合、コンソールからUnixサーバーにログインしていない場合はどうなりますか?
-XX:+HeapDumpOnOutOfMemoryError
アプリケーションでメモリ不足エラーが発生したときに、ヒープダンプを取得するために、JVM起動オプションにパラメーターを私のJBoss起動スクリプトに追加できると言われました。このデータがどこにダンプされるのかと思っていましたか?それはコンソールだけですか、それともログファイルですか?コンソールのみの場合、コンソールからUnixサーバーにログインしていない場合はどうなりますか?
回答:
ここでは何のOracleのマニュアルを言うことがあります。
デフォルトでは、ヒープダンプは、上記の例のように、VMの作業ディレクトリにあるjava_ pid .hprof というファイルに作成されます。
-XX:HeapDumpPath=
オプションで代替のファイル名またはディレクトリを指定できます。たとえば-XX:HeapDumpPath=/disk2/dumps
、ヒープダンプが/disk2/dumps
ディレクトリに生成されます。
HeapDumpPath
似たものが表示さ"Unable to create /tmp/java_pidpid.hprof: File exists"
れます。ダンプファイルをダンプパスの外に移動して、将来のダンプファイルへの道を空けてください。また<pid>
、ファイル名のプレースホルダーを使用して、ファイル名のエントロピーを増やします。
このダンプは、UNIXコンソールから表示できます。
ヒープダンプのパスは、上記の変数を配置した直後の変数として提供されます。
例えば:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${DOMAIN_HOME}/logs/mps"
上記のパスのコンソールからダンプを表示できます。
「VMの作業ディレクトリ」が何を意味するのか解読するのは難しいと思いました。私の例では、Javaサービスラッパープログラムを使用してjarを実行していました。ダンプファイルは、ラッパープログラムを配置したディレクトリ(c:\ myapp \ binなど)に作成されました。私がこれを発見した理由は、ファイルが非常に大きくなる可能性があり、私がそれらの場所を発見する前にハードドライブをいっぱいにしたためです。
「-XX:HeapDumpPath」オプションを使用していない場合、JBoss EAP / Asの場合、デフォルトではヒープダンプファイルが「JBOSS_HOME / bin」ディレクトリに生成されます。