终端内存回收处理方法及装置与流程

文档序号:17548143发布日期:2019-04-30 17:59阅读:157来源:国知局
终端内存回收处理方法及装置与流程

本发明涉及通信领域,具体而言,涉及一种终端内存回收处理方法及装置。



背景技术:

内存是系统的关键资源,当内存紧张时,就会出现卡顿、反应与运行速度变慢、任务运行报错、甚至导致系统重启和崩溃。因此,内存管理是系统的核心技术之一,对提高系统的用户体验和系统运行的稳定性具有关键作用。多系统是指在一个操作系统内核基础上运行多个应用系统。随着对手机安全性要求的提高,多系统作为提高手机安全性重要技术方案得到越来越多的应用。但是多系统会极大增加内存占用,因此需要针对多系统特点更好地管理内存,否则在使用过程中,多系统比单系统更容易出现内存紧张所导致的各种问题。

多系统的内存管理是以单系统的内存管理为基础,针对多系统特点进行调整和优化。主要的方法有:1)基于资源控制的方法,利用操作系统内核提供的资源控制机制(例如linux的cgroup),对每个系统能够使用的内存量进行限制,防止某个系统占用过多内存使其它系统不能正常运行。该方法的缺点是会产生资源的浪费,当一个系统负荷重到超过允许其使用的内存配额,另一个系统即使占用内存很低,其空闲内存也不能拿出来给当前重负荷的系统使用;2)用户态程序(比如android框架层)根据自己系统当前情况调整对内存的使用量,例如当发现自己是后台系统时,更积极地释放出更多内存以备其他系统使用。基于用户态程序管理内存的方法释放内存效果有限,并且有副作用,释放内存是以终止本系统的中的进程或者某个模块功能为代价,影响本系统的性能和功能。3)操作系统内核中对所有系统使用内存进行统一管理,这种方法可以保证不会影响各个系统已经在运行的功率。但是现有管理方法对所有系统使用的内存一视同仁,没有考虑同一管理操作对系统的不同影响。比如,内存换出操作时,选择换出一个在后台系统中使用的内存页和在前台系统(用户可以与该系统进行交互)中使用的内存页,对用户体验有影响,如果选择换出前台系统中使用的内存页,用户更可能会感受到由此引起的性能降低。

针对相关技术中对于多系统下的同一内存回收机制没有考虑到同一管理操作对系统的不同影响的问题,尚未提出解决方案。



技术实现要素:

本发明实施例提供了一种终端内存回收处理方法及装置,以至少解决相关技术中对于多系统下的同一内存回收机制没有考虑到同一管理操作对系统的不同影响的问题。

根据本发明的一个实施例,提供了一种终端内存回收处理方法,所述终端至少包括两个应用系统,包括:

检测到系统空闲内存小于预设阈值的情况下,触发内存回收操作;

通过预定算法确定内存页集合;

确定所述内存页集合中的每个内存页所属的应用系统;

根据每个应用系统预先设置的回收比例从所述内存页集合中确定待回收的内存页集合;

根据所述待回收的内存页集合进行内存回收处理。

可选地,通过预定算法确定待回收的内存页集合包括:

通过近似lru算法获取预定时间段内未被访问的内存页集合确定为所述待回收的内存页集合。

可选地,确定所述内存页集合中的每个内存页所属的应用系统包括:

获取所述内存页集合中的每个内存页的所有进程;

根据进程信息确定每个内存页所属的应用系统。

可选地,根据每个应用系统预先设置的回收比例从所述内存页集合中确定待回收的内存页集合包括:

根据每个应用系统预先设置的回收比例以及应用系统中内存页的优先级从所述内存页集合中确定待回收的内存页集合;或者,

根据每个应用系统预先设置的回收比例随机从所述内存页集合中确定待回收的内存页集合。

可选地,根据所述待回收的内存页集合进行内存回收处理包括:

将所述待回收的内存集合中的内存页释放到空闲内存池中。

根据本发明的另一个实施例,还提供了一种终端内存回收处理装置,所述终端至少包括两个应用系统,包括:

触发模块,用于检测到系统空闲内存小于预设阈值的情况下,触发内存回收操作;

第一确定模块,用于通过预定算法确定内存页集合;

第二确定模块,用于确定所述内存页集合中的每个内存页所属的应用系统;

第三确定模块,用于根据每个应用系统预先设置的回收比例从所述内存页集合中确定待回收的内存页集合;

内存回收模块,用于根据所述待回收的内存页集合进行内存回收处理。

可选地,所述第一确定模块,还用于

通过近似lru算法获取预定时间段内未被访问的内存页集合确定为所述待回收的内存页集合。

可选地,所述第二确定模块,还用于

获取所述内存页集合中的每个内存页的所有进程;

根据进程信息确定每个内存页所属的应用系统。

可选地,所述第三确定模块,还用于

根据每个应用系统预先设置的回收比例以及应用系统中内存页的优先级从所述内存页集合中确定待回收的内存页集合;或者,

根据每个应用系统预先设置的回收比例随机从所述内存页集合中确定待回收的内存页集合。

可选地,所述内存回收模块,还用于

将所述待回收的内存集合中的内存页释放到空闲内存池中。

根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行上述任一项所述的方法。

根据本发明的又一个实施例,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任一项所述的方法。

通过本发明,在操作系统内核已有的算法进行内存回收机制的基础上,再加上管理操作对被管理的内存所属的系统的影响考虑,优先选择对用户体验的性能不被影响的系统的内存进行回收操作,解决了相关技术中对于多系统下的同一内存回收机制没有考虑到同一管理操作对系统的不同影响的问题,达到了在系统内存的重负荷情况下,仍然能够保证所有系统功能不受影响,同时不影响或者降低对用户体验的影响。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明实施例的终端内存回收处理方法的移动终端的硬件结构框图;

图2是根据本发明实施例的终端内存回收处理方法的流程图;

图3是根据本发明实施例的内存回收方法的流程图;

图4是根据本发明实施例的终端内存回收处理装置的框图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例1

本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的终端内存回收处理方法的移动终端的硬件结构框图,如图1所示,移动终端10可以包括一个或两个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的数据传输方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者两个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

基于上述的移动终端,本发明实施例,提供了一种终端内存回收处理方法,所述终端至少包括两个应用系统,图2是根据本发明实施例的终端内存回收处理方法的流程图,如图2所示,包括:

步骤s202,检测到系统空闲内存小于预设阈值的情况下,触发内存回收操作;

步骤s204,通过预定算法确定内存页集合;

步骤s206,确定所述内存页集合中的每个内存页所属的应用系统;

步骤s208,根据每个应用系统预先设置的回收比例从所述内存页集合中确定待回收的内存页集合;

步骤s210,根据所述待回收的内存页集合进行内存回收处理。

通过上述步骤,在操作系统内核已有的算法进行内存回收机制的基础上,再加上管理操作对被管理的内存所属的系统的影响考虑,优先选择对用户体验的性能不被影响的系统的内存进行回收操作,解决了相关技术中对于多系统下的同一内存回收机制没有考虑到同一管理操作对系统的不同影响的问题,达到了在系统内存的重负荷情况下,仍然能够保证所有系统功能不受影响,同时不影响或者降低对用户体验的影响。

可选地,通过预定算法确定待回收的内存页集合包括:根据记录的内存已使用信息,通过近似lru算法获取预定时间段内未被访问的内存页集合确定为所述待回收的内存页集合。

可选地,确定所述内存页集合中的每个内存页所属的应用系统包括:获取所述内存页集合中的每个内存页的所有进程;根据进程信息确定每个内存页所属的应用系统。

可选地,根据每个应用系统预先设置的回收比例从所述内存页集合中确定待回收的内存页集合包括:根据每个应用系统预先设置的回收比例以及应用系统中内存页的优先级从所述内存页集合中确定待回收的内存页集合;或者,根据每个应用系统预先设置的回收比例随机从所述内存页集合中确定待回收的内存页集合。

可选地,根据所述待回收的内存页集合进行内存回收处理包括:将所述待回收的内存集合中的内存页释放到空闲内存池中。

随着手机作为随身的信息和数据处理中心,手机上有各种重要和敏感的信息和程序,比如银行账号与密码、联系人信息、工作应用程序等,迫切需要手机具有较高的安全性,以保护这些程序运行和数据的安全。采用基于容器的双系统可以有效达到这种安全性,在一个容器中运行日常生活中使用的系统,该系统具有良好的开放性和使用方便性,满足在生活中各种使用便利;在另一个容器中运行需要高安全性的系统,比如工作环境下使用的系统,该系统的程序和数据都由严格的安全措施进行管控。两个系统运行时,依赖操作系统内核提供的安全机制进行完全的安全隔离,一个系统无法访问和嗅探另一个系统的任何信息和运行状态,从而保证了安全信息不被泄漏。同时,由于基于同一操作系统内核进行资源管理,两个系统又能共享硬件资源(cpu、内存、io设备等),保证性能和降低硬件成本,提高携带使用方便性。

下面以双系统为例对本发明实施例进行进一步说明。

本实施例提供了一种双系统的内存管理方法,图3是根据本发明实施例的内存回收方法的流程图,如图3所示,其方法流程如下:

步骤s302,监控发现内存紧张,触发内存回收操作;

步骤s304,利用记录的内存使用信息,根据近似lru算法,得到可以回收的内存页集合r1;

步骤s306,对于r1中的每个内存页,获取使用这个内存页的所有进程,根据这些进程属于哪个应用系统,从而得到内存页相应属于哪个应用系统;

步骤s308,按照每个应用系统预先设置的回收比例值按比例从r1选出需要回收的内存页集合r2;

步骤s310,对内页集合r2执行内存回收操作,释放r2中的内存页到系统的空闲内存中。

通过上述步骤,在操作系统内核已有的基于近似lru算法进行内存管理的方法基础上,再加上该管理操作对被管理的内存所属的系统的影响考虑,优先选择对用户体验(也就是保证前台系统)的性能不被影响的管理操作,从而达到在系统内存的重负荷情况下,仍然能够保证所有系统功能不受影响,同时不影响或者降低对用户体验的影响。

可选地,内存回收具体包括以下步骤:

步骤1,监控发现空闲内存低于阈值,启动内存回收操作;

步骤2,利用记录的内存使用信息,根据近似lru算法,得到可以回收的内存页集合r1;所谓近似lru算法,就是找出最近一段时间未被访问的内存页集合;

步骤3,对于r1中的每个内存页,会记录使用该内存页的每个进程,而在相应的进程信息中,又会记录该进程属于哪个应用系统,这样就得到了内存页属于哪个应用系统;

步骤4,按照每个应用系统预先设置的回收比例值按比例从r1选出需要回收的内存页集合r2;假设有a、b两个应用系统,设置a的回收比例为1/3,b的回收比例为2/3,如果要选出n个页面进行回收,则其中属于应用系统a的页面数目为n/3,属于应用系统b的页面数目为2n/3;

步骤5,对内页集合r2执行内存回收操作,释放r2中的内存页到系统的空闲内存中,把r2中的页面内容回写到文件或者交换分区中,然后把r2中的页面放到系统空闲内存池中,可以分配给其它内存使用者使用。

按回收比例值选择回收内存页的具体实现方法举例如下:

假设有a、b两个应用系统,设置a的回收比例为1/3,b的回收比例为2/3,需要选出6个页面进行回收,最初的r1情况如下(mx表示内存页标号,括号内表示该内存页属于哪个系统,排列顺序表示回收的优先级顺序,即排在前面的要优于排在后面的回收):

m1(a),m2(a),m3(b),m4(a),m5(a),m6(b),m7(b),m8(b),m9(a),m10(b),m11(a),m12(b),m13(a),m14(b),m15(a),m16(a),m17(a),m18(b)

则属于a的应该有2个,属于b的应该有4个,则在上面按顺序分别选出属于a的2个页面、属于b的4个页面为:m1(a),m2(a)、m3(b),m6(b),m7(b),m8(b)。

本算法中,r1中的页面集合选择r2的顺序也可以无序(随机)或其他排序方式。

在设置应用系统的回收比例时,一个比较明显的规则是前台应用系统的回收比例设置的比较低一些,这样保证前台系统的内存页尽量留在系统中。

实施例2

根据本发明的另一个实施例,还提供了一种终端内存回收处理装置,所述终端至少包括两个应用系统,图4是根据本发明实施例的终端内存回收处理装置的框图,如图4所示,包括:

触发模块42,用于检测到系统空闲内存小于预设阈值的情况下,触发内存回收操作;

第一确定模块44,用于通过预定算法确定内存页集合;

第二确定模块46,用于确定所述内存页集合中的每个内存页所属的应用系统;

第三确定模块48,用于根据每个应用系统预先设置的回收比例从所述内存页集合中确定待回收的内存页集合;

内存回收模块410,用于根据所述待回收的内存页集合进行内存回收处理。

可选地,所述第一确定模块44,还用于

根据记录的内存已使用信息,通过近似lru算法获取预定时间段内未被访问的内存页集合确定为所述待回收的内存页集合。

可选地,所述第二确定模块46,还用于

获取所述内存页集合中的每个内存页的所有进程;

根据进程信息确定每个内存页所属的应用系统。

可选地,所述第三确定模块48,还用于

根据每个应用系统预先设置的回收比例以及应用系统中内存页的优先级从所述内存页集合中确定待回收的内存页集合;或者,

根据每个应用系统预先设置的回收比例随机从所述内存页集合中确定待回收的内存页集合。

可选地,所述内存回收模块410,还用于

将所述待回收的内存集合中的内存页释放到空闲内存池中。

实施例3

本发明的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项所述的方法。

可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

s11,检测到系统空闲内存小于预设阈值的情况下,触发内存回收操作;

s12,通过预定算法确定内存页集合;

s13,确定所述内存页集合中的每个内存页所属的应用系统;

s14,根据每个应用系统预先设置的回收比例从所述内存页集合中确定待回收的内存页集合;

s15,根据所述待回收的内存页集合进行内存回收处理。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

实施例4

本发明的实施例还提供了一种处理器,该处理器用于运行程序,其中,该程序运行时执行上述任一项方法中的步骤。

可选地,在本实施例中,上述程序用于执行以下步骤:

s21,检测到系统空闲内存小于预设阈值的情况下,触发内存回收操作;

s22,通过预定算法确定内存页集合;

s23,确定所述内存页集合中的每个内存页所属的应用系统;

s24,根据每个应用系统预先设置的回收比例从所述内存页集合中确定待回收的内存页集合;

s25,根据所述待回收的内存页集合进行内存回收处理。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在两个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的两个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1