請求書を保存するデータベースがあります。すべての請求書からの情報を使用して一連のアルゴリズムを使用して、特定の月の複雑な操作を行う必要があります。多くの請求書が存在する可能性があるため、これらの操作に必要なデータを取得して処理するには、大量のメモリが必要です。ユーザーがこれらの計算のために要求した間隔が数年に及ぶと、問題はますます悪化します。その結果、PermGen 例外が発生します。これは、ガベージ コレクターが各月の計算の間にその仕事をしていないように見えるためです。
System.GC を使用して、GC がその仕事をするようにほのめかすことは、良い習慣ではありません。私の質問は、それ以外にメモリを解放する方法はありますか? 部分的な計算を一時的に保存するために、JVM に HD スワッピングを使用させることはできますか?
また、各月の計算の終わりに System.gc を使用しようとしましたが、その結果、CPU 使用率が高くなり (ガベージ コレクターが呼び出されたため)、メモリ使用量がかなり少なくなりました。これでうまくいくかもしれませんが、これが適切な解決策になるとは思いません。