初学netty,最困惑的就是其内存的管理方式。在众多编解码器的实现中都需要注意 ReferenceCountUtil.release(msg)的使用。
java不是有内在的gc机制不需要开发者关心内存的回收吗?
什么类型的数据需要relase?什么时候release?即what 和when问题不是很清楚。
看了一段时间后,我的理解是
只对DirectByteBu类型的对象进行回收
由于这类数据非jvm控制,和c语言类似,需要显示回收内存。至于回收时间,应当在最后一次使用之后。
inbound中的自带实现中,SimpleInbound实现了回收.
还有需要注意的是,ChannleHandlerContext的flush方法是默认release的。