为什么建议在 ChannelOutboundHandler 中仅使用具有 [byte] 操作的堆缓冲区。?
Why it is recommended to use only Heap Buffers with [byte] operations in ChannelOutboundHandler.?
我们正在努力开源 api 网关并使用 Netty 作为底层框架。
我看到了 Norman Maurer 的幻灯片。在其中一张幻灯片中,他提到
Only use heap buffers if need to operate on byte[] in
ChannelOutboundHandler! By default direct ByteBuf will be returned by
ByteBufAllocator.buffer(...).
Take this as rule of thumb
这个大拇指规则背后的原因是什么?
重要的部分是"if need to operate on byte[]"。因为只有在使用堆 ByteBuf
s 时才可以使用 byteBuf.array()
访问底层 byte[]
而无需执行额外的内存复制。
我们正在努力开源 api 网关并使用 Netty 作为底层框架。
我看到了 Norman Maurer 的幻灯片。在其中一张幻灯片中,他提到
Only use heap buffers if need to operate on byte[] in ChannelOutboundHandler! By default direct ByteBuf will be returned by ByteBufAllocator.buffer(...).
Take this as rule of thumb
这个大拇指规则背后的原因是什么?
重要的部分是"if need to operate on byte[]"。因为只有在使用堆 ByteBuf
s 时才可以使用 byteBuf.array()
访问底层 byte[]
而无需执行额外的内存复制。