内存溢出OOM的处理方法、电子设备及计算机存储介质技术

技术编号:20796779 阅读:23 留言:0更新日期:2019-04-06 10:24
本申请涉及存储空间处理技术领域,公开了一种内存溢出OOM的处理方法、电子设备及计算机可读存储介质,其中,内存溢出OOM的处理方法包括:步骤a、检测预设的内存阈值原因是否满足OOM的处理条件;步骤b、如果满足OOM的处理条件,则依据客户端中当前运行的各个进程从低到高的第一优先级队列,对相应进程进行关闭处理;其中,内存阈值原因满足OOM的处理条件包括以下任一项:虚拟内存空间小于预设虚拟内存空间阈值;内存断页中断抖动;内存交换空间小于预设内存交换空间阈值;内存可用页数小于或等于内存可用页数阈值。本申请实施例的方法,有效避免因为OOM对用户造成的卡顿、强制关闭等异常情况的发生。

Processing Method of Memory Overflow OOM, Electronic Equipment and Computer Storage Media

This application relates to the storage space processing technology field, and discloses a memory overflow OOM processing method, electronic equipment and computer readable storage medium, in which the memory overflow OOM processing method includes: step a, detecting whether the preset memory threshold reason satisfies the OOM processing condition; step b, if the OOM processing condition is satisfied, then according to the current running conditions in the client side. The first priority queue of each process is from low to high, and the corresponding process is shut down. Among them, the reasons for the memory threshold satisfying the OOM processing conditions include the following: virtual memory space is less than the default virtual memory space threshold; memory page interruption jitter; memory swap space is less than the default memory swap space threshold; and memory available pages are less than or equal to the memory available pages. Number threshold. The method of the embodiment of the present application effectively avoids the occurrence of abnormal situations such as Karton and forced shutdown caused by OOM to users.

【技术实现步骤摘要】
内存溢出OOM的处理方法、电子设备及计算机存储介质
本申请涉及存储空间处理
,具体而言,本申请涉及一种内存溢出OOM的处理方法、电子设备及计算机存储介质。
技术介绍
OOM(OutOfMemory,内存溢出)指的是因为内存使用过多而导致的客户端(例如各种应用程序)闪退,这是一种操作系统管理内存的机制。通常意义的智能终端(例如智能手机)的内在包括系统物理内存和进程可使用的内存,当系统物理内存不足时,操作系统会释放其他进程并释放内存。一般情况下,内存使用较大的进程或者占用物理内存较高的进程会被操作系统优先释放,进程可使用的内存主要由虚拟机管理,安卓系统的应用程序是运行在佳沃Java虚拟机上的,其内存分配在托管堆上,并通过虚拟机来管理。一般来说,虚拟机会合理的管理内存,但是当应用使用的内存比较高时,或者内存一直被引用时,虚拟机无法完成内存回收,因此会产生内存不足的情况,导致出现OOM异常,然而,目前还不存在对OOM进行有效处理的方法。
技术实现思路
本申请的目的旨在至少能解决上述的技术缺陷之一,特提出以下技术方案:第一方面,提供了一种内存溢出OOM的处理方法,包括:步骤a、检测预设的内存阈值原因是否满足OOM的处理条件;步骤b、如果满足OOM的处理条件,则依据客户端中当前运行的各个进程从低到高的第一优先级队列,对相应进程进行关闭处理;内存阈值原因满足OOM的处理条件包括以下任一项:虚拟内存空间小于预设虚拟内存空间阈值;内存断页中断抖动;内存交换空间小于预设内存交换空间阈值;内存可用页数小于或等于内存可用页数阈值。具体地,依据客户端中当前运行的各个进程从低到高的第一优先级队列,对相应进程进行关闭处理,包括:从第二优先级队列中获取优先级最低的第一进程,并执行:步骤c、检测第一进程是否满足第一预设条件,第二优先级队列中的各个进程为第一优先级队列中优先级小于预设优先级阈值的进程,第一预设条件为足迹字节数小于或等于内存限制字节数;如果满足第一预设条件,则继续从第二优先级队列中获取第一进程的下一个进程,并将该下一个进程作为第一进程,循环执行步骤c,直至检测完第二优先级队列中的全部进程;如果不满足,则关闭第一进程,并循环执行步骤a和步骤b。进一步地,依据客户端中当前运行的各个进程从低到高的第一优先级队列,对相应进程进行关闭处理,包括:当检测完第二优先级队列中的全部进程后,从第二优先级队列中未获取到进程或者第二优先级队列中存在未被关闭的进程时,检测客户端中闲置空间的第三优先级队列中是否存在进程;如果存在进程,则关闭第三优先级队列中优先级最低的进程,并循环执行步骤a和步骤b;如果不存在进程,则获取客户端中后台运行的进程的数量,并根据后台运行的进程的数量对后台运行的进程进行相应处理。进一步地,根据后台运行的进程的数量对后台运行的进程进行相应处理,包括:步骤d、检测后台运行的进程的数量是否大于零;步骤e、如果大于零,则关闭后台运行的进程中优先级最低的进程,并检测内存可用页数是否小于或等于内存可用页数阈值;如果内存可用页数小于或等于内存可用页数阈值,则循环执行步骤d及步骤e,直至后台运行的进程的数量为零;如果内存可用页数大于内存可用页数阈值,则循环执行步骤a和步骤b。进一步地,还包括:步骤f、如果后台运行的进程的数量为零,则从第四优先级队列中获取优先级最低的进程,第四优先级队列中的进程为第一优先级队列中优先级大于或等于预设优先级阈值的进程;步骤g、检测从第四优先级队列中获取的优先级最低的进程是否为前台进程;如果不是前台进程,则关闭该从第四优先级队列中获取的优先级最低的进程;如果是前台进程,则循环执行步骤a和步骤b。进一步地,第一优先级队列包括第二优先级队列、第三优先级队列及第四优先级队列。第二方面,提供了一种内存溢出OOM的处理装置,包括:检测模块,用于检测预设的内存阈值原因是否满足OOM的处理条件;处理模块,用于当满足OOM的处理条件时,依据客户端中当前运行的各个进程从低到高的第一优先级队列,对相应进程进行关闭处理;内存阈值原因满足OOM的处理条件包括以下任一项:虚拟内存空间小于预设虚拟内存空间阈值;内存断页中断抖动;内存交换空间小于预设内存交换空间阈值;内存可用页数小于或等于内存可用页数阈值。具体地,处理模块包括获取子模块、第一检测子模块与第一处理子模块;获取子模块,用于从第二优先级队列中获取优先级最低的第一进程;第一检测子模块,用于检测第一进程是否满足第一预设条件,第二优先级队列中的各个进程为第一优先级队列中优先级小于预设优先级阈值的进程,第一预设条件为足迹字节数小于或等于内存限制字节数;第一处理子模块,用于当满足第一预设条件时,继续从第二优先级队列中获取第一进程的下一个进程,并将该下一个进程作为第一进程,循环执行第一检测子模块的动作,直至检测完第二优先级队列中的全部进程;以及用于当不满足时,关闭第一进程,并循环执行检测模块与处理模块的动作。进一步地,处理模块包括第二检测子模块与第二处理子模块;第二检测子模块,用于当检测完第二优先级队列中的全部进程后,从第二优先级队列中未获取到进程或者第二优先级队列中存在未被关闭的进程时,检测客户端中闲置空间的第三优先级队列中是否存在进程;第二处理子模块,用于当存在进程时,关闭第三优先级队列中优先级最低的进程,并循环执行检测模块与处理模块的动作;以及当不存在进程时,获取客户端中后台运行的进程的数量,并根据后台运行的进程的数量对后台运行的进程进行相应处理。进一步地,第二处理子模块包括数量检测单元与检测结果处理单元;数量检测单元,用于检测后台运行的进程的数量是否大于零;检测结果处理单元,用于当数量大于零时,关闭后台运行的进程中优先级最低的进程,并检测内存可用页数是否小于或等于内存可用页数阈值;以及用于当内存可用页数小于或等于内存可用页数阈值,则循环执行数量检测单元与检测结果处理单元的动作,直至后台运行的进程的数量为零;以及用于当内存可用页数大于内存可用页数阈值时,循环执行检测模块与处理模块的动作。进一步地,检测结果处理单元还用于当后台运行的进程的数量为零时,从第四优先级队列中获取优先级最低的进程,第四优先级队列中的进程为第一优先级队列中优先级大于或等于预设优先级阈值的进程;以及检测从第四优先级队列中获取的优先级最低的进程是否为前台进程;以及当不是前台进程时,关闭该从第四优先级队列中获取的优先级最低的进程;以及当是前台进程时循环执行检测模块与处理模块的动作。进一步地,第一优先级队列包括第二优先级队列、第三优先级队列及第四优先级队列。第三方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述程序时实现上述的内存溢出OOM的处理方法。第四方面,提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述的内存溢出OOM的处理方法。本申请实施例提供的内存溢出OOM的处理方法,检测预设的内存阈值原因是否满足OOM的处理条件,为后续进行OOM的处理奠定必要基础;如果满足OOM的处理条件,则依据客户端中当前运行的各个进程从低到高的第一优先级队列,对相应进程进行关闭处理,其中,内存阈值原因满足OOM的处理条件本文档来自技高网...

【技术保护点】
1.一种内存溢出OOM的处理方法,其特征在于,包括:步骤a、检测预设的内存阈值原因是否满足OOM的处理条件;步骤b、如果满足OOM的处理条件,则依据客户端中当前运行的各个进程从低到高的第一优先级队列,对相应进程进行关闭处理;内存阈值原因满足OOM的处理条件包括以下任一项:虚拟内存空间小于预设虚拟内存空间阈值;内存断页中断抖动;内存交换空间小于预设内存交换空间阈值;内存可用页数小于或等于内存可用页数阈值。

【技术特征摘要】
1.一种内存溢出OOM的处理方法,其特征在于,包括:步骤a、检测预设的内存阈值原因是否满足OOM的处理条件;步骤b、如果满足OOM的处理条件,则依据客户端中当前运行的各个进程从低到高的第一优先级队列,对相应进程进行关闭处理;内存阈值原因满足OOM的处理条件包括以下任一项:虚拟内存空间小于预设虚拟内存空间阈值;内存断页中断抖动;内存交换空间小于预设内存交换空间阈值;内存可用页数小于或等于内存可用页数阈值。2.根据权利要求1所述的方法,其特征在于,所述依据客户端中当前运行的各个进程从低到高的第一优先级队列,对相应进程进行关闭处理,包括:从第二优先级队列中获取优先级最低的第一进程,并执行:步骤c、检测所述第一进程是否满足第一预设条件,所述第二优先级队列中的各个进程为所述第一优先级队列中优先级小于预设优先级阈值的进程,所述第一预设条件为足迹字节数小于或等于内存限制字节数;如果满足第一预设条件,则继续从所述第二优先级队列中获取所述第一进程的下一个进程,并将该下一个进程作为第一进程,循环执行步骤c,直至检测完所述第二优先级队列中的全部进程;如果不满足,则关闭所述第一进程,并循环执行步骤a和步骤b。3.根据权利要求2所述的方法,其特征在于,所述依据客户端中当前运行的各个进程从低到高的第一优先级队列,对相应进程进行关闭处理,包括:当检测完所述第二优先级队列中的全部进程后,从所述第二优先级队列中未获取到进程或者所述第二优先级队列中存在未被关闭的进程时,检测所述客户端中闲置空间的第三优先级队列中是否存在进程;如果存在进程,则关闭所述第三优先级队列中优先级最低的进程,并循环执行步骤a和步骤b;如果不存在进程,则获取所述客户端中后台运行的进程的数量,并根据所述后台运行的进程的数量对后台运行的进程进行相应处理。4.根据权利要求3所述的方法,其特征在于,根据所述后台运行的进程的数量对后台运行的进程进行相应处理,包括:步骤d、检测所述后台运行的进程的数量是否大于零;步骤e、如果大于零,则关闭所述后台运行的进程中优先级最低的进程,并检测内存可用页数是否小于或等于内存可用页数阈值;如果内存可用页数小于或等于内存可用页数阈值,则循环执行步骤d及步骤e,直至所述后台运行的进程的数量为零;如果内存可用页数大于内存可用页数阈值,则循环执...

【专利技术属性】
技术研发人员:刘德平
申请(专利权)人:北京微播视界科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1