[英]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.