清除 netty 中的缓冲区索引有多重要

how important is clearing the buffer indexes in netty

我想知道在缓冲区设置为上下文后,在 ChannelRead 中调用 netty ByteBuffer#clear() 对性能有多重要。

据我检查 java 文档 clear() 只清除了两个指针 writerIndex 和 readerIndex。

示例代码:

@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
    ByteBuf in = (ByteBuf) msg;

    String payload = in.toString(CharsetUtil.UTF_8).replaceAll("\s", "");
    System.out.println("Server received (" + payload.length() + "): " + payload);

    String json = "{\"userId\": \"" + payload + "\"}";

    if (!payload.isEmpty()) {
        ctx.write(Unpooled.copiedBuffer(json, CharsetUtil.UTF_8));
    }

    in.clear();
}

您不需要致电 in.clear()。你需要做的是调用 in.release().