我正在使用netty 4.1.0 beta3连续发送2个缓冲区:
channel.writeAndFlush(Unpooled.wrappedBuffer(byteBuf1, byteBuf2));
netty javadoc建议使用Unpooled.wrappedBuffer()。
但是,在创建复合缓冲区时,Unpooled的源代码会将“false”作为“direct”参数传递。
这是否意味着,当通过套接字发送时,结果缓冲区将被视为间接缓冲区(速度较慢),甚至byteBuf1和byteBuf2都是直接缓冲区?
答案 0 :(得分:2)
这意味着在展开复合缓冲区时它不会使用直接缓冲区。如果两个缓冲区都是直接的,用于创建复合缓冲区,那肯定是直接的。
答案 1 :(得分:0)
不看起来使用CompositeByteBuf
创建的Unpooled
是直接的:
来自4.0.32 Unpooled.java:
public static ByteBuf wrappedBuffer(int maxNumComponents, ByteBuf... buffers) {
switch (buffers.length) {
...
default:
for (ByteBuf b: buffers) {
if (b.isReadable()) {
return new CompositeByteBuf(ALLOC, --> false <--, maxNumComponents, buffers);
}
}
}
return EMPTY_BUFFER;
}