背景
在尝试netty客户端主动断开连接,调用channel.close后,正常情况下程序会正常退出。但是我在尝试发送10W条消息到服务端再调用close方法,结果程序还在运行。正一头雾水的时候想到可以用jprofile工具查看还没关闭的线程,就进行调试,结果还真的发现一个Netty的BUG。下面是我的截图:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/aa1e2ec9c8855e2470de8abd81ffa9bc.png)
原因
这个ObjectCleanerThread的线程一直在运行,于是我就找啊找,结果在github上找到了答案,确实是netty的一个bug,不过这个bug在4.1.21已经被修复了。刚好我原先版本时4.1.20…
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bb4dd4297b9ce3c5f716e9507fa954c4.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/664a29fb9d0995b42f5657437667109f.png)
解决方法
将Netty的版本升级到4.1.21