我需要显式释放 FullHttpRequest.content().copy() 吗?

Do I need to explicitly release FullHttpRequest.content().copy()?

我有以下代码可以将传入的 FullHttpRequest 内容复制到单独的 ByteBuf 中,以将其传递给另一个线程进行处理:

final ByteBuf requestContent;
requestContent = httpRequest.content().copy();

(我需要创建一个副本,因为从其他线程访问原始缓冲区会引发 IllegalReferenceCountException

通道初始化方法如下所示:

ChannelPipeline p = ch.pipeline();
p.addLast(new HttpRequestDecoder());
p.addLast(new HttpObjectAggregator(maxRequestSize));
p.addLast(new HttpResponseEncoder());

p.addLast(httpServerHandler);

(没有明确的 bytebuf 池或任何东西)

问题是:ByteBuf副本是在哪里创建的?它是在 JVM 堆中创建的(并将由 JVM 自动 GC 编辑)还是在 netty 池中的某处创建,等待显式 释放 并造成内存泄漏?

Netty reference 表示必须显式释放字节缓冲区以避免内存泄漏。