Nettyのドキュメントには、ビルドインに「透過的なゼロ コピー」機能があると書かれていることがわかりましたByteBuffer
。しかし、読んだ後、カーネル空間とユーザー空間の切り替えについては言及されておらず、バッファの再利用についてのみ言及されていることに気付きました。
では、Netty の「ゼロ コピー」機能は、OS レベルの「ゼロ コピー」(ユーザー空間メモリからカーネル空間メモリへのコピーを削減することを意味します) とは異なるのでしょうか?
Netty は、FileChannel コンテンツをユーザー空間にコピーせずに転送できる FileRegion の使用もサポートしています。
ネットの世界では、ゼロコピーには2つの手段があります。
まず、プラットフォームがゼロ メモリ コピーをサポートしている場合は、DefaultFileRegion を Channel、ChannelHandlerContrext、または ChannelPipeline に書き込むことができます。
次に、CompositeByteBuf は、複数のバッファーを 1 つのマージされたバッファーとして表示する仮想バッファーです。したがって、いくつかの byteBuf を 1 つの CompositeByteBuf に合成することができ、コピーは必要ありません。