それぞれ数個 (15 ~ 20 個) のテキスト エントリを持つ数個 (数十万個) の HashMap オブジェクトを作成するプログラムで、このエラーが発生します。これらの文字列は、データベースに送信される前にすべて (少量に分割せずに) 収集する必要があります。
Sun によると、エラーは「ガベージ コレクションに費やされている時間が長すぎる場合に発生します。総時間の 98% 以上がガベージ コレクションに費やされ、回復されたヒープが 2% 未満の場合、OutOfMemoryError がスローされます。 "。
どうやら、コマンドラインを使用してJVMに引数を渡すことができます
- 「-Xmx1024m」(またはそれ以上)を介してヒープサイズを増やす、または
- 「-XX:-UseGCOverheadLimit」を使用して、エラー チェックを完全に無効にします。
最初のアプローチは問題なく機能しますが、2 番目のアプローチは別の java.lang.OutOfMemoryError で終わります。今回はヒープに関するものです。
では、質問: 特定のユースケース (つまり、いくつかの小さな HashMap オブジェクト) に対して、これに代わるプログラムはありますか? たとえば、HashMap の clear() メソッドを使用すると、問題は解消されますが、HashMap に格納されているデータも解消されます。:-)