默认
发表评论 29
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已解决] 求助Andriod手机端MobileIMSDK自动重连导致的OOM
IM_SDK默认配置 :        
        ConfigEntity.appKey = "***************"
        ConfigEntity.serverIP = "**************"
        ConfigEntity.serverPort = ****
        //  心跳包设置
        ConfigEntity.setSenseMode(ConfigEntity.SenseMode.MODE_10S)
        //  开启/关闭DEBUG信息输出
        ClientCoreSDK.DEBUG = false
        //  核心库的初始化
        ClientCoreSDK.getInstance().init(this)



问题重现 :
-> 启动APP时,网络处于连接状态,登录成功;
-> 然后,APP断网,持续大约30分钟左右;
-> APP_OOM崩溃;
-> [日志的意思是起的重连线程过多]

由此,修改重连机制:

打开自动重连 :

```
ClientCoreSDK.autoReLogin = true
AutoReLoginDaemon.`AUTO_RE$LOGIN_INTERVAL` = 2000

```

关闭自动重连 :
```
ClientCoreSDK.autoReLogin = false
AutoReLoginDaemon.`AUTO_RE$LOGIN_INTERVAL` = Int.MAX_VALUE

```
重连策略如下 :

-> 联网后,轮询两秒登录一次;
-> 登录成功后, 将轮询登录停止,将自动重连机制打开;
-> 断网后2分钟后,将自动重连机制关闭;

这样的确解决了以上OOM问题以及IM断网联网重连问题,但又产生了新的问题;
APP 联网情况下,连续运行三天三夜后,出现新的OOM问题,截图如下 :




这次,我找不到解决方案了,求助大佬;











即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

标签:MobileIMSDK
上一篇:[已解决] 使用Docker部署的MobileSDKIM框架一直无法登录下一篇:[已回复] Android退出IM后报ClosedChannelException

本帖已收录至以下技术专辑

推荐方案
评论 29
不让我发图我去....
你MobileIMSDK版本具体用的是哪个版本?
协议是TCP还是UDP?
引用:李鸿超 发表于 2021-03-02 09:45
不让我发图我去....

为啥不让你发图啊,是不是浏览器不支持flash?
引用:JackJiang 发表于 2021-03-02 11:35
你MobileIMSDK版本具体用的是哪个版本?
协议是TCP还是UDP?

MobileIMSDK4a_udp, 图片过大 我压缩下..
图片1

IM自动重连1.png (91.72 KB, 下载次数: 4793)

IM自动重连1.png
图片2

IM断网重连2.png (200.26 KB, 下载次数: 4654)

图片2

图片2
图片三

IM 断网重连3.png (203.36 KB, 下载次数: 4652)

图片3

图片3
图片1和图片2是 开启自动重连断网后,线程过多报错;
图片3是 采用自定义策略后.联网状态下线程过多报错;
你的设备是不是定制的?设备是常开、常联网状态吧
引用:JackJiang 发表于 2021-03-02 11:45
你的设备是不是定制的?设备是常开、常联网状态吧

我的设备机型是 三星 SM G950F;

设备是常开长联网状态;
引用:李鸿超 发表于 2021-03-02 11:49
我的设备机型是 三星 SM G950F;

设备是常开长联网状态;

你用的MobileIMSDK的版本号记得是多少吗
引用:JackJiang 发表于 2021-03-02 11:51
你用的MobileIMSDK的版本号记得是多少吗

版本应该是v5.0, 具体从代码中看不出版本吧?
引用:李鸿超 发表于 2021-03-02 12:03
版本应该是v5.0, 具体从代码中看不出版本吧?

你的应用在这种场景下,必须要用udp协议吗
引用:JackJiang 发表于 2021-03-02 12:13
你的应用在这种场景下,必须要用udp协议吗

倒不是必须...用啥协议都行.

我们的场景比较复杂.有些设备是常开长联网的 有些设备是每天开关. 还有些设备网络环境不稳;

对于用什么协议而言,倒是无所谓,也不太明白UDP和TCP协议有啥区别, 能实现功能就行;
引用:JackJiang 发表于 2021-03-02 12:13
你的应用在这种场景下,必须要用udp协议吗

大佬怎么看?
引用:李鸿超 发表于 2021-03-02 13:42
大佬怎么看?

你这种场景,我建议换成tcp协议版本试试。
tcp版本对于异步和线程的管理要优化一些,我做过暴力测试,写代码时候也特别注意过,根据这个版本的线程管理,应该不会出现你说的这种OOM。
你去试试,有什么情况,你随时上来反馈
引用:JackJiang 发表于 2021-03-02 15:12
你这种场景,我建议换成tcp协议版本试试。
tcp版本对于异步和线程的管理要优化一些,我做过暴力测试,写 ...

好的大佬 我这边试试. 麻烦你了.
引用:JackJiang 发表于 2021-03-02 15:12
你这种场景,我建议换成tcp协议版本试试。
tcp版本对于异步和线程的管理要优化一些,我做过暴力测试,写 ...

另外 TCP版本和UDP版本有什么功能上的区别吗? 还是仅仅是协议不同. 我看文档并没有关于这块的解释;
引用:JackJiang 发表于 2021-03-02 15:12
你这种场景,我建议换成tcp协议版本试试。
tcp版本对于异步和线程的管理要优化一些,我做过暴力测试,写 ...

我想问下,TCP和UDP_SDK版本有什么功能上的区别./ 还是说仅仅协议不同,我看文档中没有对这一块说说明;
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部