転載者注:以下の内容はWAS Fullプロファイル/WAS Traditionalランタイムについての情報です。
オリジナル文章公開日:2013年12月3日
OutOfMemoryErrorが発生後、Javaプロセスを再起動しないままにすると、動きが不安定になることがあるため、OOME発生時にはJavaプロセスを再起動する必要があります。ここではWAS上のJava EEアプリケーションがOutOfMemoryErrorを起こした場合、アプリケーション・サーバー(Javaプロセス)を確実に停止する設定をご紹介します。
1. WASの管理コンソールにアクセスし、以下の設定ページを開きます。
サーバー・タイプ→WebSphere Application Server→サーバー名→サーバー・インフラストラクチャー→Javaおよびプロセス管理→プロセス定義→Java仮想マシン
![](https://dw1.s81c.com//IMWUC/MessageImages/fbc6973cc0eb4880ac6e25b28209db37.gif)
2. 汎用JVM引数の設定を下記のように行います。
- UNIX/Linuxの場合
-Xdump:tool:events=systhrow,filter=java/lang/OutOfMemoryError,exec="kill -9 %pid"
- Windowsの場合
-Xdump:tool:events=systhrow,filter=java/lang/OutOfMemoryError,exec="taskkill /F /PID %pid"
汎用JVM引数
-Xdump:tool:events=systhrow,filter=java/lang/OutOfMemoryError,exec="kill -9 %pid"
3. WASを再起動して設定を反映します。
OutOfMemoryError発生時、上記設定によりアプリケーション・サーバーが停止された際、自動で再起動させたい場合の設定はこちらをご参照ください。
WAS 小ワザ集 第19回:アプリケーション・サーバーの自動起動
なお、OutOfMemoryErrorが発生すると,デフォルトでcore/heapダンプ/javacoreの出力がされるように設定されています。今回追加で設定したものは、priorityが0で設定されるため、それらが実行された後に実行されます。これらを上書きしたい場合は、高いpriorityで設定してください。
例)2の設定のプライオリティを一番高くする
-Xdump:tool:events=systhrow,filter=java/lang/OutOfMemoryError,exec="kill -9 %pid",priority=999
また、デフォルトで設定されているダンプ・オプションの一覧を確認するには、-Xdump:what
オプションを指定して、JVMを起動してください。
→ WAS 小ワザ集:目次ページにもどる