1

我们正致力于开源一个 api 网关并使用Netty作为底层框架。

我遇到了 Norman Maurer 幻灯片。在其中一张幻灯片中,他提到

如果需要对 ChannelOutboundHandler 中的 byte[] 进行操作,则仅使用堆缓冲区!默认情况下,直接 ByteBuf 将由 ByteBufAllocator.buffer(...) 返回。

以此为经验法则

这条规则背后的原因是什么?

4

1 回答 1

2

重要的部分是“如果需要对 byte[] 进行操作”。只有在使用 heap 时ByteBuf,才可以使用它byteBuf.array()来访问底层byte[]而不需要额外的内存复制。

于 2018-10-04T00:39:35.203 回答