誰かがこれをベンチマークしましたか?書き込み呼び出しのレイテンシーを最小限に抑えて、できるだけ速くディスクに書き込みたいと考えています。Java側でコンテンツをバッファリングし、バッファがいっぱいになったらfileChannelにフラッシュするよりも、(buffer.put()を介して)メモリマップバッファに書き込む方が速いのではないかと思います。そうすれば、バッファがいっぱいになったら、システム コール (FileChannel.write) を実行するだけです。MappedByteBuffer にバイトを書き込むとどうなるか、つまり、システム コールが実行されたかどうかはわかりません。
バッファリングされたアプローチでは、16、32、または 64k のチャンクでディスクに書き込むことができ、これが最適であると考えています。バッファリングの欠点は、アプリケーションがクラッシュした場合にコンテンツをフラッシュするためのシャットダウン フックが必要なことです。また、ファイル チャネルに直接書き込むのではなく、バッファーにコピーする追加のレイヤー。また、ファイルを末尾にすると、コンテンツがバッファリングされるため、必要なものが表示されない場合があります。また、メモリ マップ ファイルを末尾にするとどうなるかわかりません。
経験豊富な魂がここで助けてくれますか?