5 分ごとに呼び出される @Scheduled メソッドがあります。
バッチは多くの計算を行います。完了するまでに約 2 ~ 15 分かかります (バッチが既に実行されている場合、バッチが実行されないようにするフラグがあります)。
多くのMap
s を使用して、計算結果をキャッシュします。そのまま再開できました。累積結果を含む 1 つの主要なマップと、内部計算用のサブメソッドへの一部のマップ/リスト。
バッチの実行には約 3 ~ 6 ギガかかる可能性があります。分析するには大量のデータが必要です。
メソッド内で使用したマップ/リストは、コードがメソッドを終了したときに GC の対象になると思いますか?
メソッドを終了する前に、メソッドまたは呼び出しでWeakHashMap
orを使用する必要がありますか?WeakReference
Map.clear();
バッチの最後で GC がクリーンアップを行うのを待たずに、可能であればメモリ使用量を減らしたいと考えています。
バッチが完了すると、メモリは最大 500megs-1G に減少します。