2014-11-08 70 views
0

我一直在阅读Norman Maurer的presentation on Netty best practices,并对使用直接缓冲区和堆缓冲区有个疑问。 One slide建议“在写入SocketChannel时总是使用直接的ByteBuffer”,但another鼓励在使用MessageToByteEncoder时使用堆缓冲区。我认为我没有在第二张幻灯片中看到细节。在MessageToByteEncoder的情况下,为什么使用堆缓冲区“保存额外的字节拷贝?”Netty中MessageToByteEncoder的缓冲区类型

谢谢!

回答

1

如果您需要直接对后备数组执行操作,则使用堆缓冲区可能有意义。例如,当你使用deflater/inflater,因为它只对byte []起作用。对于所有其他情况,优先使用直接缓冲区。

+0

幸运的是你......这个人自己的答案:)。另请参阅http://stackoverflow.com/a/5671880/3993966,了解java中直接和非直接缓冲区之间差异的一般描述。 – 2014-11-08 21:15:22