Bug:io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
dsdsd

dsdsd @dsdddsdd

Location:
china
Joined:
Jun 9, 2025

Bug:io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1

Publish Date: Jun 21
0 0

我在使用netty做项目的时候发生了错误,错误堆栈信息如下:

io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
    at io.netty.util.internal.ReferenceCountUpdater.toLiveRealRefCnt(ReferenceCountUpdater.java:83)
    at io.netty.util.internal.ReferenceCountUpdater.release(ReferenceCountUpdater.java:148)
    at io.netty.buffer.AbstractReferenceCountedByteBuf.release(AbstractReferenceCountedByteBuf.java:101)
    at io.netty.util.ReferenceCountUtil.release(ReferenceCountUtil.java:90)
    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:106)
Enter fullscreen mode Exit fullscreen mode

原因分析

发生错误的原因是重复释放ByteBuf缓冲区,我在处理器中手动调用了release释放buf,然而该buf是由netty底层进行管理的,会被再次调用,所以出现了该错误!

解决方案

删除ReferenceCountUtil.release(buf)该行代码。

protected void channelRead0(ChannelHandlerContext ctx, ByteBuf buf) {
  try {

  }finally {
     //ReferenceCountUtil.release(buf);//删除该行代码,buf由netty底层进行管理
  }     

}
Enter fullscreen mode Exit fullscreen mode

Comments 0 total

    Add comment