最近在使用Android客户端使用Netty做重连接服务器(服务器关闭)的时候,出现了这个错误,每次都是固定在5分钟左右的时候出现
Channel is unrecoverably broken and will be disposed!
出现后App会出现闪退情况。
这个错误,后来在网上查阅资料,发现Android很多情况都会出现这个问题,但是Android Studio也没提示到底哪里报错。只有自己在做重连接的地方慢慢找了。后来发现每次做重连接的时候都会new一个新的对象,重复的new一个对象,也没有做回收出来,导致了内存溢出。
后来将对象置为成员变量,如下:
private static NioEventLoopGroup group = null;
在使用的地方进行判断:
if(group == null){
Log.e(TAG,"group为空");
group = new NioEventLoopGroup();
}
之后第一次连接的时候才会new一个对象,也不会出现这个错误了,至此解决。
在这里记录一下,下次出现类似的情况,保证自己不会忘。