解决io.netty.util.IllegalReferenceCountException: refCnt: 0问题。
SuperWuYou opened this issue · comments
因为netty4之后BytBuf加入了计数器概念
我们在创建Server的时候开启了异步执行,如下图:
这个时候呢,在代码执行到ServerDispatchHandler.channelRead()这个方法时,里面有这么一句代码 eventDispatcher.dispatchMessageEvent(ctx, channel, msg);
这句代码的实现是这样的:
因为是异步的情况,在我们还没有读取ByteBuf数据时就已经先执行了如下图这句代码:
这时候ByteBuf已经被释放了,所以我们抛出了io.netty.util.IllegalReferenceCountException: refCnt: 0异常。
解决方法:
1. 改为同步执行
2. 修改作者代码
问题确实存在,按照你的方式解决啦。