为什么ChunkedInput的nextChunk会返回一个新的ChannelBuffer?

时间:2011-12-14 13:06:15

标签: netty

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

为什么我必须总是返回一个新的ChannelBuffer?这为大型Streams的内存分配,对象创建和垃圾收集创造了相当大的开销。此缓冲区是否排队等待异步处理?

无论如何,我认为它应该被添加到API文档中,nextChunk每次都返回一个新的ChannelBuffer。

1 个答案:

答案 0 :(得分:2)

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