当我们创建ByteBuffer然后不断重用它时,Java上没有GC。
Netty为其输入和输出提供了ByteBuffers。
是否通过保持内部定位不断重用这些,以便缓冲区永远不需要垃圾收集?
或者必须由实施者做一些特殊的事情以确保没有GC?
答案 0 :(得分:1)
Netty 4使用引用计数来管理ByteBuf
的生命周期。当释放池化缓冲区时,底层内存区域将返回到池中,因此内存区域不会被垃圾回收。释放非池化缓冲区时,将显式释放底层内存区域,或将其设置为null,以便JVM稍后清除它。建议当然使用池化缓冲区。
引用计数优于垃圾收集:
我们希望在没有引用计数的情况下按时实现缓冲池或释放堆外缓冲区,但是一旦JVM中的对象无法访问,就无法得到通知。