OutOfMemoryError発生
連続動作のテストを、まる1日やっていると、200件目ぐらいでOutOfMemoryError が発生し、それ以降、メモリ不足で、処理ができなくなってしまった。
対応としては、
- 使用していない無駄なメンバーフィールドやメソッド変数、バッファがないかチェックして、あれば削除する。
- 頻繁にオブジェクトを生成している部分は、オブジェクトの再利用を検討して、なるべくオブジェクトを new する回数を減らすようにする。
- 一度、生成したオブジェクトでの処理が終了した後、メンバーフィールドにHashtable, Vector等がある場合、clear() して登録オブジェクトへの参照をnullにしておく。
- アプリケーション起動時に、java起動オプションの -Xmx値 -Xms値で指定する値を、大きくする。(JVMのメモリ最大サイズ指定とメモリ初期サイズ指定)
- 処理終了直後に、System#gc() を、呼び出して、ガーベージコレクションの実行を催促する。
- 処理終了後に、JVMのトータルメモリとフリーメモリを表示させて、メモリ容量を、チェックする。(メモリ確認)
以上の対応で、OutOfMemoryErrorの発生を、なんとか抑えることができた。