使用netty分配器为每个通道或每个请求创建bytebuf?

时间:2018-11-29 01:50:02

标签: java netty

嗨,我有一个Netty服务器来接受大规模的tcp连接。

阅读文档后,

我不确定:

  1. 启动后,我应该为每个通道分配一个字节缓冲区吗?

  2. 还是应该为每个请求分配一个字节缓冲区?

在官方示例中,它的写法是这样的,但我感到很奇怪,如果我为每个读取操作创建bytebuf, 那么这样做的目的是什么?

如果我为每个通道分配一个字节缓冲区,它将获得更多的性能优势吗?

 @Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
        ByteBuf buff = ctx.alloc().buffer();
        buff.writeBytes(XX);
        ctx.writeAndFlush(buff);
}

1 个答案:

答案 0 :(得分:1)

您将在需要时分配一个新缓冲区,因为您对何时可以自己重新使用缓冲区并不十分了解。

该netty默认情况下使用PooledByteBufAllocator,这意味着缓冲池是池化的,因此这里的分配实际上并不那么昂贵。