应用于安卓平台的进程清除方法和装置制造方法及图纸

技术编号:9618197 阅读:84 留言:0更新日期:2014-01-30 05:58
本申请提供了应用于安卓平台的进程清除方法和装置。本发明专利技术通过统计之前一固定时间段的内存分配量,并依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量,根据计算的内存量选择系统中某些进程予以清除,以换取更多空闲内存满足所述计算的内存量,能够实现在短时间内回收多个进程来换取足够内存,满足系统连续大内存分配的需求。

Process clearing method and device for Android platform

This application provides a process clearing method and device for Android platform. The memory allocation statistics before a fixed period of time, and on the basis of the statistics of the amount of memory allocated to computing the amount of memory the future of a set period of time may be required, according to the calculation of the amount of memory to choose some processes in the system to be cleared, the amount of memory in exchange for more free memory to satisfy the calculation, can in a short period of recovery of multiple processes for enough memory, meet the system needs continuous large memory allocation.

【技术实现步骤摘要】
应用于安卓平台的进程清除方法和装置
本申请涉及存储技术,特别涉及应用于安卓(Android)平台的进程清除方法和装置。
技术介绍
Android平台中,进程的生命周期都是由系统控制的,即使用户关掉了程序,进程依然是存在于内存之中。这样设计的目的是为了下次能快速启动。但是,随着系统运行时间的增长,其会导致内存会越来越少。基于此,Android平台提出了进程清除机制(LowMemoryKiller),其通过定时对内存执行检查,杀死一些进程,释放掉内存,避免内存不足。Android平台的Lowmemorykiller是基于其底层Linux系统的内存溢出清除(OOMKiller:OutOfMemoryKiller)而来。OOMKiller通过一种复杂的评分机制对进程打分,然后将分数最高即优先级最低的进程判定为选中的进程(如若进程优先级相同,则选取其中内存占用量最大的),杀死它并释放其相应内存。OOMKiller只有当系统内存分配失败的时候才会启动检查。LowMemoryKiller是在Linux原有OOMKiller的基础上进行了一定的改进而成的,它采用了相对主动的定时进行检查的方法。它在Linux内核线程监控,当空闲内存页面不足时,该线程则会调用注册的内存回收回调函数,来回收内存页面。内存回收的回调函数使用两个数组作为选择所要杀死进程的依据,这两个数组中分别定义了内存的阈值及各个阈值对应的优先级。例如:staticintlowmem_adj[6]={0,1,6,12,};staticintlowmem_adj_size=4;staticsize_tlowmem_minfree[6]={3*512,//6MB2*1024,//8MB4*1024,//16MB16*1024,//64MB};其中,lowmem_minfree保存空闲内存的阈值,单位是一个页面的大小4K,lowmem_adj保存每个阈值对应的优先级。Lowmemorykiller主要是根据进程的优先级来判定进程的重要程度。进程的优先级和它的类型以及其被调度的次序有关。在当前空闲内存的大小小于某个阈值(意味着内存不足)时,以该阈值对应的优先级为基准,遍历各个进程,计算每个进程占用内存的大小,找出优先级大于基准优先级的进程,在这些进程中选择优先级最大的进程杀死,如果优先级相同,则选择占用内存最多的进程杀死。图1示出了LowMemoryKiller的流程图。Android平台上的LowMemoryKiller,相较Linux平台原生的OOMKiller更为主动,但是其策略采用的是每次仅仅杀死一个进程的方法,无法满足系统连续大内存分配的需求。
技术实现思路
本申请提供了应用于安卓平台的进程清除方法和装置,以实现在短时间内回收多个进程来换取足够内存,满足系统连续大内存分配的需求。本申请提供的技术方案包括:一种应用于安卓平台的进程清除方法,包括:在当前获知内存申请请求时,统计之前一固定时间段的内存分配量;在当前的空闲内存小于设定阈值时,依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量;根据计算的内存量从当前所有进程中选取至少一个进程添加至待清除进程列表中,以通过清除该待清除进程列表中所有进程来换取空闲内存满足计算的内存量。一种应用于安卓平台的进程清除装置,包括:内存统计模块,用于在当前获知内存申请请求时,统计之前一固定时间段的内存分配量;内存计算模块,用于在当前的空闲内存小于设定阈值时,依据所述内存统计模块统计出的内存分配量计算将来的一设定时间段内可能需要的内存量;进程清除模块,用于根据所述内存计算模块计算的内存量从当前所有进程中选取至少一个进程添加至待清除进程列表中,以通过清除该待清除进程列表中所有进程来换取空闲内存满足计算的内存量。由以上技术方案可以看出,本专利技术中,通过统计之前一固定时间段的内存分配量,并依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量,根据计算的内存量选择系统中某些进程予以清除,以换取更多空闲内存满足所述计算的内存量,能够实现在短时间内回收多个进程来换取足够内存,满足系统连续大内存分配的需求。进一步地,本专利技术,相比于现有进程清除方法,相同状况之下,应用本专利技术,系统杀死的进程数量大大减少,系统内存使用量也有所降低,且本专利技术未对平台的其他性能指标带来任何明显的负面作用。附图说明图1示出了LowMemoryKiller的流程图;图2为本专利技术实施例提供的方法流程图;图3为本专利技术实施例提供的装置结构图。具体实施方式为了使本专利技术的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本专利技术进行详细描述。本专利技术实施例提供的方法包括图2所示流程:参见图2,图2为本专利技术实施例提供的流程图。如图2所示,该流程可包括以下步骤:步骤201,在当前获知内存申请请求时,统计之前一固定时间段的内存分配量。通常,当需要启动一个进程时都会发送内存申请请求,以请求该需要启动的进程所需要的内存。基于此,本步骤201中,当得知有新的内存请求时,就执行步骤201。作为本专利技术一个实施例,步骤201中,所述统计之前一固定时间段的内存分配量包括:步骤A1,按照循环统计方式先统计距离当前最近的固定时间段内的内存分配量,如果发现该最近的固定时间段内的至少一个时间段没有按照设定频率分配内存,将该最近的固定时间段内没有按照设定频率分配内存的时间段作为当前时间段,将该最近的固定时间段作为当前固定时间段;步骤A2,从当前固定时间段内排除当前时间段,并从当前固定时间段之前的时间选择最近、按照设定频率分配内存、且大小与当前时间段相等的一段时间替代当前时间段包含至当前固定时间段内,判断最近的固定时间段内是否还存在没有按照设定频率分配内存的时间段,如果是,返回步骤A1中将该最近的固定时间段内没有按照设定频率分配内存的时间段作为当前时间段的操作,并执行步骤A2。以固定时间段为1分钟、且1分钟内内存分配量都是按照每5秒分配一次内存的频率为例,则在当前获知内存请求时,就统计距离当前最近的1分钟内的内存分配量,结果发现在该最近的1分钟的前20秒都没有按照每5秒分配一次内存的频率分配内存,而其他40秒都是按照每5秒分配一次内存的频率分配内存,则从该最近的1分钟开始再向前统计20秒内的内存分配量,结果发现在该20秒按照每5秒分配一次内存的频率分配内存,则就将该20秒的内存分配量和之前已统计的40秒内的内存分配量作为1分钟内的内存分配量。步骤202,在当前的空闲内存小于设定阈值时,依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量。作为本专利技术的一个实施例,在当前的空闲内存大于或等于设定阈值时,就意味着空闲内存可能会满足所述内存申请请求,没有必要执行本专利技术杀死已经运行的进程,可按照现有内存分配方式处理获知的内存申请请求。本步骤202中,将来的一设定时间段是在当前时间之后的一时间段。作为本专利技术的一个实施例,本步骤202中,所述依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量包括:按照线性预测方式或者非线性预测方式依据统计出的内存分配量预测将来的一设定时间段内可能需要的内存量。假如步骤201中的固定时间段为m,本步骤202中的设定时间段为n,则,以线性预测方本文档来自技高网
...
应用于安卓平台的进程清除方法和装置

【技术保护点】
一种应用于安卓平台的进程清除方法,其特征在于,该方法包括:在当前获知内存申请请求时,统计之前一固定时间段的内存分配量;在当前的空闲内存小于设定阈值时,依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量;根据计算的内存量从当前所有进程中选取至少一个进程添加至待清除进程列表中,以通过清除该待清除进程列表中所有进程来换取空闲内存满足计算的内存量。

【技术特征摘要】
1.一种应用于安卓平台的进程清除方法,其特征在于,该方法包括:在当前获知内存申请请求时,统计之前一固定时间段的内存分配量;在当前的空闲内存小于设定阈值时,依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量;根据计算的内存量从当前所有进程中选取至少一个进程添加至待清除进程列表中,以通过清除该待清除进程列表中所有进程来换取空闲内存满足计算的内存量;所述统计之前一固定时间段的内存分配量包括:步骤A1,按照循环统计方式先统计距离当前最近的固定时间段内的内存分配量,如果发现该最近的固定时间段内的至少一个时间段没有按照设定频率分配内存,将该最近的固定时间段内没有按照设定频率分配内存的时间段作为当前时间段,将该最近的固定时间段作为当前固定时间段;步骤A2,从当前固定时间段内排除当前时间段,并从当前固定时间段之前的时间选择最近、按照设定频率分配内存、且大小与当前时间段相等的一段时间替代当前时间段包含至当前固定时间段内,判断最近的固定时间段内是否还存在没有按照设定频率分配内存的时间段,如果是,返回步骤A1中将该最近的固定时间段内没有按照设定频率分配内存的时间段作为当前时间段的操作,并执行步骤A2;如果否,将替代的时间段内的内存分配量和之前已统计的时间段内的内存分配量作为当前固定时间段内的内存分配量。2.根据权利要求1所述的方法,其特征在于,所述依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量包括:按照线性预测方式或者非线性预测方式依据统计出的内存分配量预测将来的一设定时间段内可能需要的内存量。3.根据权利要求1所述的方法,其特征在于,所述根据计算的内存量从当前所有进程中选取至少一个进程添加至待清除进程列表中包括:B1,根据计算的内存量遍历当前所有进程以选取优先级最低的进程;B2,识别选取的优先级最低的进程数量是否大于1,如果是,则从该选取的优先级最低的进程中选取占用内存量最大的进程作为待选进程,如果否,直接将选取的优先级最低的进程作为待选进程;B3,判断待选进程的数量是否达到设定的进程上限阈值,如果是,将待选进程添加至待清除进程列表中,结束当前流程,如果否,执行步骤B4;B4,判断待选进程所占用的内存量是否满足所述计算的内存量,如果是,将待选进程添加至待清除进程列表中,结束当前流程,如果否,遍历当前所有进程中除待选进程之外的其他进程以选取优先级最低的进程,并返回步骤B2。4.根据权利要求1或3所述的方法,其特征在于,所述以通过清除该待清除进程列表中所有进程来换取空闲内存满足计算的内存量包括:一次性杀死待清除进程列表中所有进程,以使得被杀死的进程所占用的内存量释放满足所述计算的内存量。5.根据权利要求4所述的方法,其特征在于,该方法进一步包括:在...

【专利技术属性】
技术研发人员:潘影波刘桦金学烈李文洸
申请(专利权)人:三星电子中国研发中心三星电子株式会社
类型:发明
国别省市:

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

1