我遇到了这个查询:Create a ByteBuf in Netty 4.0 about conversion from byte[] to ByteBuf and ByteBuffer to ByteBuf。我很想知道以另一种方式进行的转换:
io.netty.buffer.ByteBuf 到 java.nio.ByteBuffer
以及如何有效地做到这一点,最少/不复制?我做了一些阅读,经过反复试验,我发现这种转换方式效率低下(有两份):
// io.netty.handler.codec.http.FullHttpRequest fullHttpRequest;
ByteBuf conByteBuf = fullHttpRequest.content ();
int numReadBytes = conByteBuf.readableBytes ();
conBytes = new byte[numReadBytes];
conByteBuf .readBytes (conBytes); // First Copy
ByteBuffer conByteBuffer = ByteBuffer.allocate (conBytes.length);
conByteBuffer.put (conByteBuf); // Second Copy
我的问题是,我们能否避免一个或两个副本,并使 ByteBuffer 的内部缓冲区使用 ByteBuf 的内部缓冲区。
谢谢!