【发布时间】:2018-07-19 02:53:43
【问题描述】:
说,我们在 MyClass 中声明:
ByteBuf fixedBuf = Unpooled.unreleasableBuffer(
PooledByteBufAllocator.DEFAULT.directBuffer(64, 64));
这应该保留一个 64 字节的堆外内存块。如文档所述,Netty 在这里忽略了“release()”和“retain()”功能,因此,该块在 MyClass 的整个生命周期中保持分配状态。一旦 MyClass 的实例超出范围,分配的堆外内存块会发生什么? JVM/GC 会释放它吗?如果没有,或者如果我想以编程方式丢弃“fixedBuf”,我怎样才能最好地为此类 ByteBuf 对象释放声明的内存块?
您是否还可以指出避免 ByteBuf 对象上的任何内存泄漏和问题的解释/示例/最佳实践?
【问题讨论】: