出现io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1的原因及解决办法
错误信息
在使用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的原因及解决办法的更多相关文章
- Netty 5 io.netty.util.IllegalReferenceCountException 异常
异常信息 io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1 原因 handler 继承了 SimpleChan ...
- netty的异常分析 IllegalReferenceCountException refCnt: 0
netty的异常 IllegalReferenceCountException refCnt: 0 这是因为Netty有引用计数器的原因,自从Netty 4开始,对象的生命周期由它们的引用计数(ref ...
- Java io.netty.util.ReferenceCountUtil 代码实例
原文:https://www.helplib.com/Java_API_Classes/article_64580 以下是展示如何使用io.netty.util.ReferenceCountUtil的 ...
- 记一次netty版本冲突,报java.lang.NoSuchMethodError: io.netty.util.internal.ObjectUtil.checkPositive的问题
elasticsearch 5.6中使用TransportClient初始化抛异常 在引入elasticsearch5.6的transportclient包中,会引入netty进行通信. <!- ...
- 编译Netty源码遇到的一些问题-缺少io.netty.util.collection包
缺少包和java类 下载好Netty的源码后,导入到IDE,运行自带的example时编译不通过. 如下图,是因为io.netty.util.collection的包没有 点进去看,确实没有这个包 发 ...
- 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 ...
- 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 ...
- Windows 7 安装.net framework 4.0 失败,错误HRESULT 0xc8000222解决办法
今天在客服那里发现一个比较奇怪的错误,在客服机子上安装.NET Framework4.0时,出现如下错误:HRESULT 0xc8000222 百度了下原因,原来是win7自动更新造成的.原文网址:h ...
- 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: ...
- Android开发之onActivityResult()中的resultCode为0,intent为null的解决办法
BUG:昨天在使用activity之间传值的时候,遇到了一个bug,该bug为:Activity A启动Activity B,然后在Activity B中取到一个值,并通过back键返回到Activi ...
随机推荐
- 数据库周刊57丨Oracle 2021年度安全警报;MySQL 8.0.23发布;MySQL索引优化导致的死锁案例;巨杉数据库跨引擎事务实践;MongoDB企业级能力解析;OceanBase OBCP 实验指导手册……
摘要:墨天轮数据库周刊第57期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档. 热门资讯 1.Oracle 2021年度安全警报: Critical Patch Update 发布8个 ...
- 数据库排行榜|当 DB-Engines 遇见墨天轮国产数据库排行
提到数据库排名,此时脑海里浮现出的是什么?是 DB-Engines,还是墨天轮数据库排行?两者间有什么区别?下面来聊一下业内这两个知名数据库排名平台. 本篇文章约有 3000 字,预计阅读时间 7 分 ...
- springboot2.X动态修改log4j2日志级别
利用springboot提供的 spring-boot-starter-actuator 包可以实现动态修改log4j2日志级别的功能 添加依赖 添加依赖包 <dependency> &l ...
- Buffer和Channel
IO 和 NIO 区别: 可简单认为:IO 是面向流的处理,NIO 是面向块(缓冲区)的处理 面向流的 I/O 系统一次一个字节地处理数据. 一个面向块(缓冲区)的 I/O 系统以块的形式处理数据. ...
- 学习JavaScript第一天
文章目录 1.JavaScript简介 2.JavaScript编写的位置 2.1.内部JavaScript 2.2外部JavaScript 2.3内联JavaScript 3.JavaScript注 ...
- TOYOTA SYSTEMS Programming Contest 2024(AtCoder Beginner Contest 377) 补题记录(A-E)
AtCoder Beginner Contest 377 A - Rearranging ABC 字符串有ABC三个字母即可. #include<bits/stdc++.h> using ...
- 如果让你处理hbase 怎么保证数据的安全性可靠性 不需要具体的设置 要一套方案
有关数据安全及可靠我们认为大体上分为存储安全和使用安全 1 数据存储安全 hbase是基于hdfs的一种数据存储解决方案,所以有关数据的安全性可靠性可以利用hdfs自身的副本机制保障.另外原生的hba ...
- php接收二进制流
/** 二进制流生成文件 * $_POST 无法解释二进制流,需要用到 $GLOBALS['HTTP_RAW_POST_DATA'] 或 php://input * $GLOBALS['HTTP_RA ...
- redis的另一个分支 keydb
今天无意间发现了redis还有一个分支keydb https://keydb.dev 是多线程的,貌似在机器内核多的情况下效果比redis效果好 访问 https://docs.keydb.dev/d ...
- 关于meta-analysis的一些评论
当提到meta-analysis,很多人的反应是,水文章的神器. 一方面是因为Meta分析作为系统综述里一个定量分析方法,能把各种研究结果有组织有纪律地综合起来,证据档次瞬间飙升,能甩传统综述好几条街 ...