我试图找出何时在Netty中使用Unpooled。一些示例显示在Unpooled.wrappedBuffer
中包裹了byte [],而一些示例仅显示
ctx.writeAndFlush(bytes); // where bytes is just byte[]
是否有关于何时使用Unpooled的指南?
答案 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部分有一个很好的介绍。