为什么建议在ChannelOutboundHandler中仅对[byte]操作使用堆缓冲区?

时间:2018-10-02 14:02:51

标签: java memory netty heap-memory directmemory

我们正在努力开放api网关的外包,并使用 Netty 作为基础框架。

我遇到了诺曼·莫雷(Norman Maurer)的幻灯片。在其中一张幻灯片中,他提到了

  

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

     

以经验为依据

此法则背后的原因是什么?

1 个答案:

答案 0 :(得分:2)

重要的部分是“如果需要对byte []进行操作”。就像仅在使用堆ByteBuf时一样,可以使用byteBuf.array()来访问基础byte[],而无需进行额外的内存复制。