4

There are two following options in Java HotSpot VM Options:

-XX:OnError="<cmd args>;<cmd args>" Run user-defined commands on fatal error. (Introduced in 1.4.2 update 9.) 

-XX:OnOutOfMemoryError="<cmd args>; 
<cmd args>" Run user-defined commands when an OutOfMemoryError is first thrown. (Introduced in 1.4.2 update 12, 6) 

As far as I can see there are no such options in IBM JVM.
Is it correct?

I need to call some shell script in case if heap dump was generated.
What is the simplest way to do it?

4

3 に答える 3

5

IBM J9 JDKは、-Xdumpフラグを介して上記の機能を提供します。これは、ダンプエージェントを登録するための推奨される方法です。

OOMEでヒープダンプを生成するようにJVMを構成する一般的な方法は、アプリケーションまたはJVMによってスローされたすべてのメモリ不足エラーをキャッチし、ダンプを「ウォーキング」用に準備することです(ヒープインスペクターを使用)。

-Xdump:system+heap+java:events=systhrow+user,filter=java/lang/OutOfMemoryError,request=exclusive+prepwalk+compact

参照:Eclipseメモリーアナライザーガイド

JAVA_DUMP_OPTS環境変数も使用できます。これについての詳細は、IBMJDK診断ガイドを参照してください。

編集

OOMEでコマンドを実行するには、-Xdumpオプションでツールオプションを指定する必要があります。

于 2010-08-12T13:00:06.867 に答える
3

-Xdumpはあなたの友達であり、非常に強力です。

OOMの場合、次のようになります。

"-Xdump:tool:events = throw、filter = * OutOfMemoryError、exec = cmd_to_run

于 2010-08-12T13:00:34.917 に答える
0

私が正しく覚えていれば、IBMのJVMはSun JVMのインストルメント化されたバージョンであるため、同じフラグをサポートすることを期待します。Javaのメジャーバージョン間でコマンドラインオプションを比較することは可能ですか?(つまり、Sun1.6とIBM1.4.2の違いは?)

フラグの解決策が見つからない場合は、IBM JVM/tmp/dump-locationsがダンプファイルのフルパスを追加することにより、ファイルを更新するという事実を利用できます。cronジョブは、最後の実行以降にそのファイルが変更されたときにスクリプトを実行できます。

于 2010-08-12T12:15:22.350 に答える