Netty readBytes 引用计数

Netty readBytes reference counting

我的代码看起来像这样:

void decodeFragment(ByteBuf fragment) {
    fragment.readByte();
    ...
}

void decodeMessage(ByteBuf buf) {
    buf.readByte(); // header
    ...
    decodeFragment(buf.readBytes(20));
}

据我了解,来自 readBytes 的新缓冲区将有自己的引用计数,我需要处理它。如果我知道我不需要比原始缓冲区更长的片段,还有其他选择吗?也许 readSlice 是我要找的?文档不是很清楚。

另一个相关问题。如果我创建 Unpooled.wrappedBuffer 我还需要处理引用计数吗? Unpooled.copiedBuffer 呢?

如果您不需要额外的引用计数并且可以共享或想要共享底层存储 slicereadSlice 是您正在寻找的方法。

是的,即使对于 wrappdBuffercopiedBuffer,您也需要注意释放缓冲区。