错误信息

在使用Netty构建Server服务器的时候,之前用得好好的,最近整理了一下就出现了以下错误:

WARN (AbstractChannelHandlerContext.java:294)- An exception 'java.lang.NullPointerException' [enable DEBUG level for full stacktrace] was thrown by a user handler's exceptionCaught() method while handling the following exception:
io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
at io.netty.buffer.AbstractReferenceCountedByteBuf.toLiveRealCnt(AbstractReferenceCountedByteBuf.java:181)
at io.netty.buffer.AbstractReferenceCountedByteBuf.release0(AbstractReferenceCountedByteBuf.java:133)

分析的文章很多,这里有两篇比较靠谱的:
1、netty的异常分析 IllegalReferenceCountException refCnt: 0, decrement: 1
2、Netty中常见的IllegalReferenceCountException异常原因及解决

原因分析

从以上的分析文章中发现,SimpleChannelInboundHandler会自动释放内存(虽然这是一种软释放)即是refCnt引用数减一。

而本人在使用SimpleChannelInboundHandler作为Server端的时候,自己手动释放了一次msg的内存,导致refCnt引用数为0,这个时候框架试图去释放一次,就报如上错误。释放代码如:

msg.release();

我都解决方法是删除上面一行代码,然后就不再出现以上错误。

因此建议全局搜索下release方法,看看是不是重复释放了一次内存造成的该异常,当然前提是你使用了SimpleChannelInboundHandler作为Handler处理事务,使用AbstractChannelInboundHandler是不会主动释放内容的,这个时候需要你自己手动释放一次。

出现io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1的原因及解决办法的更多相关文章

  1. Netty 5 io.netty.util.IllegalReferenceCountException 异常

    异常信息 io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1 原因 handler 继承了 SimpleChan ...

  2. netty的异常分析 IllegalReferenceCountException refCnt: 0

    netty的异常 IllegalReferenceCountException refCnt: 0 这是因为Netty有引用计数器的原因,自从Netty 4开始,对象的生命周期由它们的引用计数(ref ...

  3. Java io.netty.util.ReferenceCountUtil 代码实例

    原文:https://www.helplib.com/Java_API_Classes/article_64580 以下是展示如何使用io.netty.util.ReferenceCountUtil的 ...

  4. 记一次netty版本冲突,报java.lang.NoSuchMethodError: io.netty.util.internal.ObjectUtil.checkPositive的问题

    elasticsearch 5.6中使用TransportClient初始化抛异常 在引入elasticsearch5.6的transportclient包中,会引入netty进行通信. <!- ...

  5. 编译Netty源码遇到的一些问题-缺少io.netty.util.collection包

    缺少包和java类 下载好Netty的源码后,导入到IDE,运行自带的example时编译不通过. 如下图,是因为io.netty.util.collection的包没有 点进去看,确实没有这个包 发 ...

  6. netty-websocket-spring-boot-starter关闭报错 io/netty/channel/AbstractChannel$AbstractUnsafe io/netty/util/concurrent/GlobalEventExecutor

    报错 java.lang.NoClassDefFoundError: io/netty/channel/AbstractChannel$AbstractUnsafe$ at io.netty.chan ...

  7. Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead的解决办法

    今天在导入工程进Eclipse的时候竟然出错了,控制台输出的是: [2013-02-04 22:17:13 - takepicture] Android requires compiler compl ...

  8. Windows 7 安装.net framework 4.0 失败,错误HRESULT 0xc8000222解决办法

    今天在客服那里发现一个比较奇怪的错误,在客服机子上安装.NET Framework4.0时,出现如下错误:HRESULT 0xc8000222 百度了下原因,原来是win7自动更新造成的.原文网址:h ...

  9. UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128) 解决办法

    最近在用Python处理中文字符串时,报出了如下错误: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 0: ...

  10. Android开发之onActivityResult()中的resultCode为0,intent为null的解决办法

    BUG:昨天在使用activity之间传值的时候,遇到了一个bug,该bug为:Activity A启动Activity B,然后在Activity B中取到一个值,并通过back键返回到Activi ...

随机推荐

  1. 【首场重磅亮相】KaiwuDB 1.0 时序数据库线上发布会明日开启!邀您共同见证

    首场重磅亮相 KaiwuDB 是浪潮集团控股的数据库企业,以多模数据库为核心,面向工业物联网.数字能源.交通车联网.智慧城市.数字政务等多种场景,提供领先创新的数据服务软件. 新生代数据库,扬帆起航正 ...

  2. C#的排序方法 OrderBy

    using System;using System.Collections.Generic;using System.Linq;using System.Net.Http;using System.R ...

  3. 云原生周刊:12 个容易忽略的 Kubernetes 安装错误

    文章推荐 12 个容易忽略的 Kubernetes 安装错误 这篇文章总结了 12 个在 Kubernetes 安装过程中容易忽略但却必须注意的错误.这些错误包括: 没有正确安装 kubectl. 没 ...

  4. v-if的使用方式

    一.语法 其中<span></span>可以换成<div></div>, <div></div>的可以换成<templet ...

  5. 问题:深度学习时代的初期最为火热的AI安全问题已经很少有人讨论了,那么是不是已经解决该问题了呢?

    答案: 先说结果,该问题并没有被解决. 之所以该问题已经不是最初的那么火热的讨论和研究热点了,其主要原因是大家发现这个神经网络在深度学习时代是十分的work的,虽然AI安全问题一直没有解决,但是比较发 ...

  6. Kriging 模型 —— 克里金法 —— 最优插值

  7. AlignSum:数据金字塔与层级微调,提升文本摘要模型性能 | EMNLP'24

    来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: AlignSum: Data Pyramid Hierarchical Fine-tuning for Aligning with Human ...

  8. element-ui resetFields 无效的问题

    1.问题 触发bug的条件是先打开,编辑进行赋值,后打开新增 先点开编辑 再打开新增 这个时候你会发现刚刚赋值过的数据还遗留在表单里面 即使在打开  dialog  的时候执行了重置也没有效果 res ...

  9. paramiko模块的使用

    简介: Paramiko是基于Python(2.7,3.4+)版本实现和封装了SSHv2协议,底层是用cryptography实现,我们如果希望远程登录主机或者远程下载或者上传文件到远程主机都可以使用 ...

  10. TreeMap源码分析——基础分析(基于JDK1.6)

    常见的数据结构有数组.链表,还有一种结构也很常见,那就是树.前面介绍的集合类有基于数组的ArrayList,有基于链表的LinkedList,还有链表和数组结合的HashMap,今天介绍基于树的Tre ...