清除 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()
.
我想知道在缓冲区设置为上下文后,在 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()
.