1

bash スクリプトから Java プログラムを実行すると、しばらくして次のメッセージが表示されます。

MyProgram.bash: line 30:  4388 Killed

私はbashのパラメータを最大にします:

ulimit -Ss unlimited
ulimit -Sc unlimited
ulimit -Sn 4096

しかし、実行後にCTRL + Cを作成すると、次のエラーが発生します:

OpenJDK 64-Bit Server VM warning: Exception java.lang.OutOfMemoryError occurred dispatching signal SIGINT to handler- the VM may need to be forcibly terminated

この情報を追加します。別のマシンで同じパラメーターを使用して同じプログラムを実行すると、この例外は発生しません! これらの引数を使用してプログラムを実行します (メモリに 5Go があります)

jvmargs="-d64 -Xms512m -Xmx3G -Xss1G"

シリアライゼーションを使用しているため、私のアルゴリズムは多くのメモリを必要とします。では、なぜ私は例外ではなくメッセージを殺したのOutOfMemoryErrorですか? 問題を解決するにはどうすればよいですか? 同じパラメータを使用して別のマシンで実行すると、なぜ動作するのですか?

4

2 に答える 2

4

そのエラーメッセージを読み直してください。

OpenJDK 64ビットサーバーVM警告:例外java.lang.OutOfMemoryErrorが発生し、シグナルSIGINTをハンドラーにディスパッチしました-VMを強制的に終了する必要がある場合があります

OpenJDKが割り込み信号を正しく処理できない場合(完全にメモリが不足しているため)、 OpenJDKはそれ自体を強制終了することになります。

于 2012-12-01T13:19:42.237 に答える