использовать netty allocator для создания bytebuf на канал или на запрос? - PullRequest
0 голосов
/ 29 ноября 2018

Привет, я получил 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 голосов
/ 29 ноября 2018

Вы будете выделять новый буфер всякий раз, когда вам это нужно, поскольку вы не очень хорошо представляете себе, когда вы можете повторно использовать буфер самостоятельно.

При этом нетти использует по умолчанию PooledByteBufAllocatorЭто означает, что буферы объединяются, поэтому распределение здесь не так уж и дорого.

...