Netty引用计数器报错
今天在原有的netty代码上增加了一个对通道参数初始化的类,但是接受tcp数据的时候总是报错。
这里继承了SimpleChannelInboundHandler类,并重写了channelRead0()方法,
但是每一次都会报netty计数器引用的错误,后来找相关博客,发现SimpleChannelInboundHandler会通过channelRead()来调用channelRead0()这个我们重写的方法
问题就出在finally这里,每一次调用完channelRead()方法后,都会通过ReferenceCountUtil.release(msg)对引用计数器进行一次释放,然后我重写的channelRead0()对ByteBuf没有进行任何操作,自然这里的ByteBuf的引用计数器的值仍然为0,不会有任何变动。但是框架仍然对其进行了释放操作,所以就会出现以上的错误。
修改方法:
这里我添加了对计数器的显示增长,就不会报错了。