清除Netty中的缓冲指数有多重要

时间:2018-07-08 20:42:53

标签: 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();
}

1 个答案:

答案 0 :(得分:2)

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