現在、非常に大きな double の配列を割り当てているアルゴリズムがあり、頻繁に更新および検索しています。配列のサイズは N^2/2 で、N はアルゴリズムが動作する行数です。また、アルゴリズムを取り巻くアプリケーションに関連する目的のために、全体のコピーを保持する必要があります。
もちろん、これにより、競合するヒープの制限があるため、アルゴリズムが処理できる行数に制限が課されます。この時点まで、アルゴリズムを使用している人々に -Xmx 設定を更新してより多くのスペースを割り当てるように依頼することから逃れましたが、それはうまくいきました。ただし、この配列をメモリに収まるよりも大きくする必要があるという本当の問題があります。
この大規模な配列の必要性を軽減し、その分野でいくつかの有望な結果を得るために、アルゴリズムを変更する計画が既にあります。ただし、これはプロセスの根本的な変更であり、現在のコードの高度に洗練された状態に到達するまでには、さらに多くの作業が必要になります。
そのため、新しいアルゴリズムを完成させながら、既存のアルゴリズムの寿命を延ばしたいと考えていました。つまり、膨大な double 配列の割り当てに関連するヒープ制限に取り組む必要がありました。
私の質問は、それに対処する最善の方法は何ですか? nio FileChannel と MappedByteBuffer を使用する必要がありますか、それともより良い方法がありますか。nio アプローチを使用する場合、同じサイズのメモリ内配列と比較して、どのようなパフォーマンス ヒットが予想されるでしょうか?
ありがとう