本发明涉及计算机,尤其是涉及一种避免内存溢出导致客户端闪退的方法、装置、设备及存储介质。
背景技术:
1、随着货运出行业务的发展,司机端应用中加入了越来越多的功能,包括了地图以及导航的使用、地理位置更新、地理位置上报、埋点数据上报、客户端监控日志上报等,再加上司机在线时间较长,长时间的使用难免会有一部分内存泄漏,或者内存回收时机不当,导致内存占用越来越大,容易触发客户端系统的内存溢出(oom,outofmemory),从而引发应用崩溃。
2、目前,对于内存溢出闪退问题,通常有两种应对方式:1、在实际代码开发层面避免内存泄漏,比如缓存尽量使用nscache,合理使用自动施放池,对于图片的优化,采用各种调试工具避免内存泄漏等;2、线上监控方案,通过线上日志数据的收集,分析,在代码开发层面做优化。
3、由于货运出行等场景情况复杂,客户端在线时间长且后台任务多,现有常用的通过数据采集或优化代码的手段并不能很好地解决内存溢出导致客户端闪退的问题。
技术实现思路
1、本发明旨在提供一种避免内存溢出导致客户端闪退的方法、装置、设备及存储介质,以解决上述技术问题,能够解决内存溢出导致客户端闪退的问题,适用于货运出行等复杂场景。
2、为了解决上述技术问题,本发明提供了一种避免内存溢出导致客户端闪退的方法,包括:
3、获取当前终端对应的内存溢出阈值,基于所述内存溢出阈值确定内存占用警戒值和内存占用高危值;其中,所述内存占用高危值大于所述内存占用警戒值;
4、当判断所述当前终端的内存占用率超过所述内存占用警戒值时,通过预设的第一优化策略降低所述当前终端的内存占用率;
5、当判断所述当前终端的内存占用率超过所述内存占用高危值时,通过预设的第二优化策略降低所述当前终端的内存占用率。
6、进一步地,所述获取当前终端对应的内存溢出阈值,包括以下任一项:
7、基于所述当前终端通过jetsam机制杀死进程时记录的内存阈值日志,获取所述当前终端对应的内存溢出阈值;
8、在root权限下使用所述当前终端的xnu操作系统内核的目标函数和目标宏,并基于所述目标函数和所述目标宏获取所述当前终端对应的内存溢出阈值;
9、通过目标app创建测试子线程,并通过所述测试子线程按照预设的内存大小循环申请系统内存值,直至出现内存溢出导致所述目标app闪退,记录所述目标app在闪退前的最大内存使用值,并基于所述最大内存使用值确定所述当前终端对应的内存溢出阈值。
10、进一步地,所述基于所述内存溢出阈值确定内存占用警戒值和内存占用高危值,包括:
11、将所述内存溢出阈值的70%作为内存占用警戒基准值,并根据所述内存占用警戒基准值以及预设的第一浮动值确定为所述内存占用警戒值;
12、将所述内存溢出阈值的90%作为内存占用高危基准值,并根据所述内存占用高危基准值以及预设的第二浮动值确定为所述内存占用高危值。
13、进一步地,所述通过预设的第一优化策略降低所述当前终端的内存占用率,包括以下至少一项:
14、基于预设的第一span值降低所述当前终端的地图应用的刷新精度;
15、基于预设的第一distancefilter值降低所述当前终端的位置信息的更新精度;
16、降低所述当前终端的位置信息、埋点数据、监控日志的上报频率;
17、降低所述当前终端的网络请求并发量。
18、进一步地,所述通过预设的第二优化策略降低所述当前终端的内存占用率,包括以下至少一项:
19、基于预设的第二span值降低所述当前终端的地图应用的刷新精度;
20、基于预设的第二distancefilter值降低所述当前终端的位置信息的更新精度;
21、暂停所述当前终端的位置信息、埋点数据、监控日志的上报进程,并暂停将应用产生的数据写入本地硬盘;
22、对所述当前终端进行清理缓存;其中,所述缓存包括图片缓存、网络请求缓存和数据缓存中的至少一种;
23、对所述当前终端进行销毁单例对象;
24、对存在于所述当前终端的导航栈中且未被展示的次级页面进行销毁。
25、进一步地,所述的避免内存溢出导致客户端闪退的方法还包括:
26、当判断所述当前终端的内存占用率重新降低至所述内存占用警戒值以下时,基于与所述第一优化策略相对应的恢复策略对所述当前终端的业务功能进行恢复。
27、进一步地,所述的避免内存溢出导致客户端闪退的方法还包括:
28、当判断所述当前终端的内存占用率重新降低至所述内存占用高危值以下时,基于与所述第二优化策略相对应的恢复策略对所述当前终端的业务功能进行恢复。
29、本发明还提供一种避免内存溢出导致客户端闪退的装置,包括:
30、阈值确定模块,用于获取当前终端对应的内存溢出阈值,基于所述内存溢出阈值确定内存占用警戒值和内存占用高危值;其中,所述内存占用高危值大于所述内存占用警戒值;
31、第一优化模块,用于当判断所述当前终端的内存占用率超过所述内存占用警戒值时,通过预设的第一优化策略降低所述当前终端的内存占用率;
32、第二优化模块,用于当判断所述当前终端的内存占用率超过所述内存占用高危值时,通过预设的第二优化策略降低所述当前终端的内存占用率。
33、本发明还提供一种终端设备,包括处理器和存储有计算机程序的存储器,所述处理器执行所述计算机程序时实现任一项所述的避免内存溢出导致客户端闪退的方法。
34、本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现任一项所述的避免内存溢出导致客户端闪退的方法。
35、与现有技术相比,本发明具有如下有益效果:
36、本发明提供了一种避免内存溢出导致客户端闪退的方法、装置、设备及存储介质,所述方法包括:获取当前终端对应的内存溢出阈值,基于所述内存溢出阈值确定内存占用警戒值和内存占用高危值;其中,所述内存占用高危值大于所述内存占用警戒值;当判断所述当前终端的内存占用率超过所述内存占用警戒值时,通过预设的第一优化策略降低所述当前终端的内存占用率;当判断所述当前终端的内存占用率超过所述内存占用高危值时,通过预设的第二优化策略降低所述当前终端的内存占用率。本发明通过针对不同终端设备的机型获取对应的内存溢出阈值,以确定适用于当前机型的警戒值及高危值,当监控到内存占用率达到相应值的时候采取设定的策略来优化,以降低内存占用率,从而能够有效避免由于内存溢出导致客户端闪退的情况发生。
1.一种避免内存溢出导致客户端闪退的方法,其特征在于,包括:
2.根据权利要求1所述的避免内存溢出导致客户端闪退的方法,其特征在于,所述获取当前终端对应的内存溢出阈值,包括以下任一项:
3.根据权利要求1所述的避免内存溢出导致客户端闪退的方法,其特征在于,所述基于所述内存溢出阈值确定内存占用警戒值和内存占用高危值,包括:
4.根据权利要求1所述的避免内存溢出导致客户端闪退的方法,其特征在于,所述通过预设的第一优化策略降低所述当前终端的内存占用率,包括以下至少一项:
5.根据权利要求1所述的避免内存溢出导致客户端闪退的方法,其特征在于,所述通过预设的第二优化策略降低所述当前终端的内存占用率,包括以下至少一项:
6.根据权利要求4所述的避免内存溢出导致客户端闪退的方法,其特征在于,还包括:
7.根据权利要求5所述的避免内存溢出导致客户端闪退的方法,其特征在于,还包括:
8.一种避免内存溢出导致客户端闪退的装置,其特征在于,包括:
9.一种终端设备,包括处理器和存储有计算机程序的存储器,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的避免内存溢出导致客户端闪退的方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述的避免内存溢出导致客户端闪退的方法。