我正在尝试弄清楚何时使用 Unpooled在内蒂.一些示例显示将 byte[] 包装在 Unpooled.wrappedBuffer
中,一些示例仅显示
ctx.writeAndFlush(bytes); // where bytes is just byte[]
是否有关于何时使用 Unpooled 的指南?
最佳答案
将 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[]
和传递通过调用 Unpooled#wrappedBuffer(byte[])
创建的 ByteBuf
之间没有根本区别。后者可能更明确地调用非池化缓冲区的使用,以防池化与非池化的使用在特定应用程序的上下文中很重要。
如果您需要有关池化缓冲区的更多详细信息,Netty“4.0 中的新功能和值得注意的”wiki 页面 Pooled buffers 中有很好的介绍。部分。
关于java - 何时在netty中使用Unpooled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45291211/