最近在使用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一個對象,也不會出現這個錯誤了,至此解決。
在這裏記錄一下,下次出現類似的情況,保證自己不會忘。