たとえば、メモリ制限を超える大量のデータを読み取る必要がある時間の20%がアプリケーションの一部です。メモリ制限を増やすことはできますが、ほとんどの場合必要ない場合は高い割り当てが必要になるため、そうすることを躊躇します。
このようなピーク負荷に達したときに、カスタマイズされたjava.util.List実装を使用してディスクにスプールすることを検討していますが、より軽い状況ではメモリに残ります。
データはコレクションに一度ロードされ、その後繰り返されて処理され、その後破棄されます。コレクションに追加されたら、並べ替える必要はありません。
誰かがそのようなアプローチに関して賛否両論を持っていますか?
このようなリストの実装を提供するオープンソース製品はありますか?
ありがとう!
更新:
- 生意気ではありませんが、「巨大な」とは、同じハードウェア上の他のプロセスに干渉することなく、割り当てたいメモリの量を超えることを意味します。他にどのような詳細が必要ですか?
- このアプリケーションは、基本的に、複数のデータベーステーブルからデータをロードし、その上で広範なビジネスロジックを実行するバッチプロセッサです。集計操作は実行されるロジックの一部であるため、リスト内のすべてのデータが必要です。
- 私はちょうどこの投稿に出くわしました。これは非常に良いオプションを提供します:Javaで同等のSTXXL