Netty 如何直接分配和释放 Buffer 内存?
How Netty direct Buffer memory allocated and deallocated?
以下是我使用 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;
}
这取决于您的传出管道。通常,您必须显式释放直接缓冲区。但是,如果您的管道中已经有出站处理程序来释放缓冲区,则您不需要这样做。例如,如果您的管道包含 MessageToByteEncoder
处理程序或其子类,则您不需要显式释放缓冲区。
在大多数情况下,如果您使用默认的 HTTP、Websockets、MQTT 处理程序,则不需要释放直接缓冲区。
以下是我使用 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;
}
这取决于您的传出管道。通常,您必须显式释放直接缓冲区。但是,如果您的管道中已经有出站处理程序来释放缓冲区,则您不需要这样做。例如,如果您的管道包含 MessageToByteEncoder
处理程序或其子类,则您不需要显式释放缓冲区。
在大多数情况下,如果您使用默认的 HTTP、Websockets、MQTT 处理程序,则不需要释放直接缓冲区。