在性能方面,我想知道在将缓冲区设置为上下文后在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();
}
答案 0 :(得分:2)
您不需要致电in.clear()
。您需要做的是致电in.release()
。