Netty 为什么下一块ChunkedInput要返回一个新的ChannelBuffer?

Netty 为什么下一块ChunkedInput要返回一个新的ChannelBuffer?,netty,Netty,我正在结合已经提供的ChunkedWriteHandler进行ChunkedInput的自定义实现。出于性能原因,我在ChunkedInput中创建了一个ChannelBuffer,并在每次调用nextChunk时对其进行更新,并始终返回相同的更新ChannelBuffer。我发现这种方法显然会导致字节无法传输。解决方案是每次调用时总是返回一个新的ChannelBuffer。 为什么我总是要返回一个新的通道缓冲区?这为大型流的内存分配、对象创建和垃圾收集带来了相当大的开销。此缓冲区是否已排队等待

我正在结合已经提供的ChunkedWriteHandler进行ChunkedInput的自定义实现。出于性能原因,我在ChunkedInput中创建了一个ChannelBuffer,并在每次调用nextChunk时对其进行更新,并始终返回相同的更新ChannelBuffer。我发现这种方法显然会导致字节无法传输。解决方案是每次调用时总是返回一个新的ChannelBuffer。

为什么我总是要返回一个新的通道缓冲区?这为大型流的内存分配、对象创建和垃圾收集带来了相当大的开销。此缓冲区是否已排队等待异步处理 无论如何,我认为应该将它添加到API文档中,即nextChunk每次都必须返回一个新的ChannelBuffer。

是的,这正是ChannelBuffer被放入队列中写入的“问题”。因此,如果您重新使用它,您可能会在它被写回之前损坏它的内容