嗨,我有一个Netty服务器来接受大规模的tcp连接。
阅读文档后,
我不确定:
启动后,我应该为每个通道分配一个字节缓冲区吗?
还是应该为每个请求分配一个字节缓冲区?
在官方示例中,它的写法是这样的,但我感到很奇怪,如果我为每个读取操作创建bytebuf, 那么这样做的目的是什么?
如果我为每个通道分配一个字节缓冲区,它将获得更多的性能优势吗?
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
ByteBuf buff = ctx.alloc().buffer();
buff.writeBytes(XX);
ctx.writeAndFlush(buff);
}
答案 0 :(得分:1)
您将在需要时分配一个新缓冲区,因为您对何时可以自己重新使用缓冲区并不十分了解。
该netty默认情况下使用PooledByteBufAllocator
,这意味着缓冲池是池化的,因此这里的分配实际上并不那么昂贵。