我有以下代码将传入的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池中的某处创建,等待显式发布并创建内存泄漏?