大きなキャッシュの主な問題は、完全な GC 時間です。目安としては、1 GB あたり 1 秒かもしれません (これはアプリケーションによって異なります)。20 GB のキャッシュがあり、アプリケーションが 20 秒ごとに一時停止する場合、それは許容できるでしょうか?
ダイレクト ファイルとメモリ マップ ファイルのファンとして、私はいつデータをヒープから離すのではなく、簡単にするためにヒープを使用するのかを考える傾向があります。;) メモリ マップされたファイルは、サイズに関係なく、完全な GC 時間にほとんど影響しません。
メモリ マップド ファイルを使用する利点の 1 つは、物理メモリよりもはるかに大きくても、十分なパフォーマンスを発揮できることです。これにより、OS は、どの部分をメモリに入れ、何をディスクにフラッシュする必要があるかを判断します。
ところで: より高速な SSD を使用することも役立ちます ;) 大容量のドライブも同様に高速になる傾向があります。実行できる IOP を確認します。
この例では、16 GB のマシンにマップされた 8 TB のファイル メモリを作成します。http://vanillajava.blogspot.com/2011/12/using-memory-mapped-file-for-huge.html
80 GB のファイルの例ではパフォーマンスが向上することに注意してください。8 TB はオーバーキルになる可能性があります。;)