[英]Is netty CompositeByteBuf direct or indirect
我正在使用netty 4.1.0 beta3连续发送2个缓冲区:
channel.writeAndFlush(Unpooled.wrappedBuffer(byteBuf1, byteBuf2));
netty javadoc建议使用Unpooled.wrappedBuffer()。
但是,Unpooled的源代码在创建复合缓冲区时将“ false”作为“ direct”参数传递。
这是否意味着通过套接字发送时,结果缓冲区将被视为间接缓冲区(速度较慢),即使byteBuf1和byteBuf2都是直接缓冲区?
这意味着在扩展复合缓冲区时将不使用直接缓冲区。 如果用于创建复合缓冲区的两个缓冲区都是直接缓冲区,则它肯定是直接缓冲区。
它看起来并不像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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.