netty 内存释放时机的疑惑
来源:4-6 NioEventLoop的启动

正义柔情永在
2018-10-23
老师,感谢您对我昨天提问的问题的解答.大致都明白了.印证了自己的理解.但是关于netty 对内存回收的这里,我仍然有以下几点不确定:
1:
上图中的问题是:如果使用了SimpleChannelInboundHandler,那么形参中传递过来的buf是不需要手动回收的.而channelRead0内部如果自己申请的,或者其他任意地方申请的内存仍然需要手动回收. 这个对不对?
2: ctx.alloc().directBuffer(),Unpooled.directBuffer()两者都是堆外内存,唯一区别就是前者是池化的,后者未池化,两者使用结束后都必须进行回收.这个理解对不对?
3: ctx.write(buf) 这个buf不需要手动回收是不?
4: decode ( )中解码完毕后的buf,不需要手动回收,channelRead方法中会自动回收,是不?
写回答
1回答
-
正义柔情永在
提问者
2018-10-23
老师,我刚跟了一下代码,发现ByteToMessageDecoder 其实还是一个InHandler ,也就是说在pipline中,会触发器channelRead 方法, 我刚看了一下channelRead方法,这个方法会调用子类实现的decode方法,而且会在finnaly 中释放已经读取完毕的buf,这个才是在decode ()方法中释放bufe报错的原因.这个理解对不
012018-10-27
相似问题