一种内存回收方法及装置制造方法及图纸

技术编号:16326881 阅读:115 留言:0更新日期:2017-09-29 18:53
本发明专利技术实施例公开了一种内存回收方法及装置。其中,该方法包括:在确定系统当前的可用内存小于内存阈值时,从后台进程列表中确定待回收内存的进程,其中,所述后台进程列表包括一个或多个应用的进程,所述待回收内存的进程为所述一个或多个应用的进程中满足进程所占用内存与内存压力值的差值的绝对值小于预设阈值的条件的进程,所述内存压力值为所述内存阈值与所述系统当前的可用内存的差值;向系统内核发送处理指令,以触发所述系统内核对所述待回收内存的进程进行处理以回收所述待回收内存的进程所占用的内存。实施本发明专利技术实施例可以减少终端出现卡顿现象的概率。

【技术实现步骤摘要】
一种内存回收方法及装置
本专利技术涉及信息
,尤其涉及一种内存回收方法及装置。
技术介绍
随着终端(如智能手机、平板电脑等终端)的发展,终端已成为人们日常生活必不可缺的物品。实践中发现,用户在刚开始购买终端的时候,用户使用终端非常顺滑,应用运行起来非常快,而在终端被长期使用后,由于安装的应用越来越多,会有许多无用进程和服务在后台运行,并且用户浏览网页以及使用应用程序(Application,APP)会产生过多的缓存,这些将会使得系统的可用内存变少,进而导致终端出现卡顿现象。通常采取的做法是在系统分配内存时检查系统是否有充足的可用内存,若发现当前系统的可用内存不能支撑当前的内存分配需求,则会启动系统内存清理操作,比如:回收系统缓存、关闭进程等。然而,这样会导致需要内存资源的应用阻塞,处于等待状态,延长了APP的响应时间,进而增大了终端出现卡顿现象的概率。
技术实现思路
本专利技术实施例提供了一种内存回收方法及装置,可以减少终端出现卡顿现象的概率。本专利技术实施例第一方面公开了一种内存回收方法,包括:在确定系统当前的可用内存小于内存阈值时,从后台进程列表中确定待回收内存的进程,其中,所述后台进程列表包括一个或多个应用的进程,所述待回收内存的进程为所述一个或多个应用的进程中满足进程所占用内存与内存压力值的差值的绝对值小于预设阈值的条件的进程,所述内存压力值为所述内存阈值与所述系统当前的可用内存的差值;向系统内核发送处理指令,以触发所述系统内核对所述待回收内存的进程进行处理以回收所述待回收内存的进程所占用的内存。其中,可以由一个或多个内存管控线程、一个或多个内存管控进程、应用中的任一个来执行上述方法的步骤。其中,后台进程列表是一个根据应用的重要程度以及进程优先级进行排序的动态二维表,包括一个或多个应用的进程,即后台进程列表可以包括一个或多个应用,同时,一个应用可以包括一个或多个进程。该后台进程列表在2种情况下创建,第一种:在确定系统当前的可用内存小于内存阈值时创建后台进程列表,这种情况一般是针对需要立即进行内存回收的场景,第二种:在确定系统当前的可用内存小于内存阈值并且系统处于空闲状态时创建后台进程列表,这种情况一般是用户和终端进行交互,为了不影响用户体验,需要在系统空闲的时候进行内存回收。具体的,本专利技术实施例中,在确定系统当前的可用内存小于内存阈值时,可以制定内存回收策略,根据该内存回收策略,从后台进程列表中确定待回收内存的进程,进一步地,向系统内核发送处理指令,以触发系统内核对待回收内存的进程进行处理以回收待回收内存的进程对应的内存,直到缓解系统当前的内存压力。此外,由于应用之间存在各种关联关系,在对后台进程所占用的内存进行回收时,为了防止被清理的进程被其关联的进程拉起来,所以,在回收内存时是以应用为单位,回收该应用包括的进程所占用的内存。其中,进程所占用的内存是指该进程独立占用的那部分内存,而不包括该进程与其他进程共享的那部分内存。可见,这种方式中,在确定系统当前的可用内存小于内存阈值时,可以主动进行内存回收,当应用程序真正需要大量内存的时候,系统内核已经回收回来大量可用的内存,从而可以减少终端出现卡顿现象的概率。在一个可能的实施方式中,在检测到第一关键事件时触发所述确定系统当前的可用内存小于内存阈值的操作,且所述内存阈值为与所述第一关键事件对应的第一内存阈值。其中,该内存阈值可以是静态预置的,也可以是动态配置的。不同的第一关键事件对应的场景是不同的,相应的第一内存阈值也不同。在一个可能的实施方式中,所述第一关键事件包括如下事件中的任意一种:程序启动开始事件、清理事件以及内存不足OOM事件。其中,当发生第一关键事件时需要立即进行内存回收。在一个可能的实施方式中,在检测到第二关键事件且确定系统处于空闲状态时触发所述确定当前系统的可用内存小于内存阈值的操作,且所述内存阈值为与所述第二关键事件对应的第二内存阈值。其中,该内存阈值可以是静态预置的,也可以是动态配置的。不同的第二关键事件对应的场景是不同的,相应的第二内存阈值也不同。其中,在该实施方式中,步骤的先后顺序是:在检测到第二关键事件时先判断系统是否处于空闲状态,在确定系统处于空闲状态时再去读取当前系统的可用内存,在确定当前系统的可用内存小于内存阈值时,从后台进程列表中确定待回收内存的进程,进一步地,向系统内核发送处理指令,以触发系统内核对待回收内存的进程进行处理以回收待回收内存的进程对应的内存。在一个可能的实施方式中,在检测到第二关键事件时触发所述确定当前系统的可用内存小于内存阈值的操作,在确定系统处于空闲状态时触发所述从后台进程列表中选择待回收内存的进程的操作,且所述内存阈值为与所述第二关键事件对应的第二内存阈值。其中,在该实施方式中,步骤的先后顺序是:在检测到第二关键事件时,先读取当前系统的可用内存,在确定当前系统的可用内存小于内存阈值的情况下,再判断系统是否处于空闲状态,在确定系统处于空闲状态时从后台进程列表中选择待回收内存的进程,进一步地,向系统内核发送处理指令,以触发系统内核对待回收内存的进程进行处理以回收待回收内存的进程对应的内存。在一个可能的实施方式中,所述第二关键事件包括如下事件中的任意一种:程序启动完成事件、亮屏事件、灭屏事件、触屏事件、界面切换事件、任务切换完成事件以及广播事件。在一个可能的实施方式中,所述确定系统处于空闲状态包括:判断所述系统当前的负载是否小于负载阈值;在所述系统当前的负载小于所述负载阈值的情况下,确定系统处于空闲状态。其中,系统处于空闲状态有2种场景,第一种是在用户未使用终端的情况下,比如终端处于待机状态可以看作是系统处于空闲状态,又比如:在应用启动完成出现显示画面,但以后并没有和终端进行交互,这个时候系统没有大量的IO操作,可以看作是系统处于空闲状态,第二种是在用户使用终端但系统当前的负载不影响用户体验的情况下,可以看作是系统处于空闲状态,比如系统的负载小于负载阈值。在一个可能的实施方式中,在确定出的所述待回收的进程为多个的情况下,所述向系统内核发送处理指令包括:调用多个线程向系统内核发送多个处理指令,其中,每个所述线程用于发送一个或多个处理指令。其中,确定出的待回收的进程可以为一个也可以为多个,在一个进程需要发送多个处理指令的情况下,该进程可以一个一个连续地发送处理指令,而不需要在发送完一个处理指令后去检测系统内核回收进程对应的内存的状态,然后再去发送另一个处理指令。在该可选的实施方式中,在确定出的所述待回收的进程为多个的情况下,可以调用多个线程向系统内核发送多个处理指令。具体的,一个线程发送多个处理指令是指该线程一个一个连续地发送处理指令,而不需要在发送完一个处理指令后去检测系统内核回收进程对应的内存的状态,然后再去发送另一个处理指令。其中,每个处理指令携带一个待回收的进程的标识。可见,这种方式可以提高线程向系统内核发送处理指令的效率,同时,也可以加速系统内核回收内存性能。在一个可能的实施方式中,所述从后台进程列表中确定待回收内存的进程包括:根据应用的重要程度从低到高的顺序,从所述后台进程列表包括的多个应用中确定至少一个应用;根据进程优先级从低到高的顺序,从所述至少一个应用包括的进程中确定待回收内存的进程本文档来自技高网...
一种内存回收方法及装置

【技术保护点】
一种内存回收方法,其特征在于,包括:在确定系统当前的可用内存小于内存阈值时,从后台进程列表中确定待回收内存的进程,其中,所述后台进程列表包括一个或多个应用的进程,所述待回收内存的进程为所述一个或多个应用的进程中满足进程所占用内存与内存压力值的差值的绝对值小于预设阈值的条件的进程,所述内存压力值为所述内存阈值与所述系统当前的可用内存的差值;向系统内核发送处理指令,以触发所述系统内核对所述待回收内存的进程进行处理以回收所述待回收内存的进程所占用的内存。

【技术特征摘要】
1.一种内存回收方法,其特征在于,包括:在确定系统当前的可用内存小于内存阈值时,从后台进程列表中确定待回收内存的进程,其中,所述后台进程列表包括一个或多个应用的进程,所述待回收内存的进程为所述一个或多个应用的进程中满足进程所占用内存与内存压力值的差值的绝对值小于预设阈值的条件的进程,所述内存压力值为所述内存阈值与所述系统当前的可用内存的差值;向系统内核发送处理指令,以触发所述系统内核对所述待回收内存的进程进行处理以回收所述待回收内存的进程所占用的内存。2.根据权利要求1所述的方法,其特征在于,在检测到第一关键事件时触发所述确定系统当前的可用内存小于内存阈值的操作,且所述内存阈值为与所述第一关键事件对应的第一内存阈值。3.根据权利要求2所述的方法,其特征在于,所述第一关键事件包括如下事件中的任意一种:程序启动开始事件、清理事件以及内存不足OOM事件。4.根据权利要求1所述的方法,其特征在于,在检测到第二关键事件且确定系统处于空闲状态时触发所述确定当前系统的可用内存小于内存阈值的操作,且所述内存阈值为与所述第二关键事件对应的第二内存阈值。5.根据权利要求1所述的方法,其特征在于,在检测到第二关键事件时触发所述确定当前系统的可用内存小于内存阈值的操作,在确定系统处于空闲状态时触发所述从后台进程列表中选择待回收内存的进程的操作,且所述内存阈值为与所述第二关键事件对应的第二内存阈值。6.根据权利要求4或5所述的方法,其特征在于,所述第二关键事件包括如下事件中的任意一种:程序启动完成事件、亮屏事件、灭屏事件、触屏事件、界面切换事件、任务切换完成事件以及广播事件。7.根据权利要求4至6任意一项所述的方法,其特征在于,所述确定系统处于空闲状态包括:判断所述系统当前的负载是否小于负载阈值;在所述系统当前的负载小于所述负载阈值的情况下,确定系统处于空闲状态。8.根据权利要求1~7任一项所述的方法,其特征在于,在确定出的所述待回收的进程为多个的情况下,所述向系统内核发送处理指令包括:调用多个线程向系统内核发送多个处理指令,其中,每个所述线程用于发送一个或多个处理指令。9.根据权利要求1~7任一项所述的方法,其特征在于,所述从后台进程列表中确定待回收内存的进程包括:根据应用的重要程度从低到高的顺序,从所述后台进程列表包括的多个应用中确定至少一个应用;根据进程优先级从低到高的顺序,从所述至少一个应用包括的进程中确定待回收内存的进程。10.根据权利要求1~9任意一项所述的方法,其特征在于,所述方法还包括:在确定所述系统当前的可用内存小于所述内存阈值时创建所述后台进程列表。11.根据权利要求1~9任意一项所述的方法,其特征在于,所述方法还包括:在确定所述系统当前的可用内存小于所述内存阈值并且所述系统处于空闲状态时创建所述后台进程列表。12.根据权利要求10或11所述的方法,其特征在于,所述创建所述后台进程列表包括:确定当前在后台运行的每个应用的关键因素的分值,所述关键因素包括以下中的一个或多个:进程优先级、用户使用习惯、进程占用系统资源以及应用的关联关系;针对每个所述应用,将所有所述关键因素的分值进行加权计算,获得所述应用的重要程度;根据所有所述应用的重要程度,对所有所述应用进行排序;根据进程优先级,对排序后的每个所述应用包括的进程进行排序,以生成所述后台进程列表。13.一种内存回收装置,其特征在于,包括:确定单元,用于在确定系统当前的可用内存小于内存阈值时...

【专利技术属性】
技术研发人员:杨启彬段小军
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

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

1