什么时候在netty中使用Unpooled

时间:2017-07-24 22:43:27

标签: java netty

我试图找出何时在Netty中使用Unpooled。一些示例显示在Unpooled.wrappedBuffer中包裹了byte [],而一些示例仅显示

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

是否有关于何时使用Unpooled的指南?

1 个答案:

答案 0 :(得分:-1)

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[])之间没有根本区别。后者可能更明确地指出使用非池化缓冲区,以防在特定应用程序的上下文中使用池化与非池化非常重要。

如果您需要有关池化缓冲区的更多详细信息,Netty“新的和值得注意的4.0”维基页面在Pooled buffers部分有一个很好的介绍。