Netty如何直接分配和释放缓冲区内存?

时间:2016-10-26 07:58:05

标签: netty bytebuffer http2

以下是我使用Netty Unpooled.directBuffer.do的代码我必须明确释放内存或netty这样做吗?

public ByteBuf Payload() {
    int totalLength=0;
   for(ByteBuf byteBuf:payload){
       totalLength+=byteBuf.readableBytes();
   }
 **ByteBuf byteBuf= Unpooled.directBuffer(totalLength,totalLength+10);**
    for(ByteBuf byteBuf1:payload){
        byteBuf.writeBytes(byteBuf1);
    }
    System.out.println("content :"+byteBuf.readableBytes());
    return byteBuf;
}

1 个答案:

答案 0 :(得分:1)

这取决于您的传出管道。通常,您必须明确释放直接缓冲区。但是,如果您的管道中已经有释放缓冲区的Outbound Handler,则您不需要这样做。例如,如果您的管道包含MessageToByteEncoder处理程序或其子类,则您不需要显式释放缓冲区。 在大多数情况下,如果您使用默认HTTP,Websockets,MQTT处理程序,则不需要释放直接缓冲区。