2017-07-24 46 views
1

我試圖弄清楚何時在Netty中使用Unpooled。一些例子顯示包裹在Unpooled.wrappedBuffer字節[],以及一些例子表明只是何時使用netty中的Unpooled

ctx.writeAndFlush(bytes); // where bytes is just byte[] 

是否有關於何時使用UNPOOLED的準則?

回答

0

byte[]傳遞給Netty write方法相當於傳遞未混合的ByteBuf。我們可以在ByteArrayEncoder的源代碼,這在內部調用Unpooled#wrappedBuffer(byte[])看到這一點:

@Override 
protected void encode(ChannelHandlerContext ctx, byte[] msg, List<Object> out) throws Exception { 
    out.add(Unpooled.wrappedBuffer(msg)); 
} 

因此,通過byte[]和傳遞ByteBuf通過調用Unpooled#wrappedBuffer(byte[])創建自己之間沒有根本的區別。後者可能更明確地提出使用unpooled緩衝區,以防在特定應用程序的情況下使用共用池與非池化池。

如果您需要關於池緩衝區的更多詳細信息,Netty「4.0中新增值得注意的」wiki頁面在Pooled buffers部分中有很好的介紹。