以下是我使用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;
}
答案 0 :(得分:1)
这取决于您的传出管道。通常,您必须明确释放直接缓冲区。但是,如果您的管道中已经有释放缓冲区的Outbound Handler,则您不需要这样做。例如,如果您的管道包含MessageToByteEncoder
处理程序或其子类,则您不需要显式释放缓冲区。
在大多数情况下,如果您使用默认HTTP,Websockets,MQTT处理程序,则不需要释放直接缓冲区。