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

文档序号:6514428阅读:140来源:国知局
应用于安卓平台的进程清除方法和装置制造方法
【专利摘要】本申请提供了应用于安卓平台的进程清除方法和装置。本发明通过统计之前一固定时间段的内存分配量,并依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量,根据计算的内存量选择系统中某些进程予以清除,以换取更多空闲内存满足所述计算的内存量,能够实现在短时间内回收多个进程来换取足够内存,满足系统连续大内存分配的需求。
【专利说明】应用于安卓平台的进程清除方法和装置
【技术领域】
[0001]本申请涉及存储技术,特别涉及应用于安卓(Android)平台的进程清除方法和装置。
【背景技术】
[0002]Android平台中,进程的生命周期都是由系统控制的,即使用户关掉了程序,进程依然是存在于内存之中。这样设计的目的是为了下次能快速启动。但是,随着系统运行时间的增长,其会导致内存会越来越少。
[0003]基于此,Android平台提出了进程清除机制(Low Memory Killer),其通过定时对内存执行检查,杀死一些进程,释放掉内存,避免内存不足。
[0004]Android平台的Low memory killer是基于其底层Linux系统的内存溢出清除(00M Killer:0ut Of Memory Killer)而来。00M Killer通过一种复杂的评分机制对进程打分,然后将分数最高即优先级最低的进程判定为选中的进程(如若进程优先级相同,则选取其中内存占用量最大的),杀死它并释放其相应内存。00M Killer只有当系统内存分配失败的时候才会启动检查。
[0005]Low Memory Killer是在Linux原有00M Killer的基础上进行了一定的改进而成的,它采用了相对主动的定时进行检查的方法。它在Linux内核线程监控,当空闲内存页面不足时,该线程则会调用注册的内存回收回调函数,来回收内存页面。
[0006]内存回收的回调函数使用两个数组作为选择所要杀死进程的依据,这两个数组中分别定义了内存的阈值及各个阈值对应的优先级。例如:
[0007]static int 1碰em_adj [6] = {O, 1,6,12,};
[0008]static int lowmem_adj_size=4;
[0009]static size_t lowmem_minfree[6] = {3*512, //6MB
[0010]2*1024,//8MB
[0011]4*1024,//16MB
[0012]16*1024,//64MB
[0013]};
[0014]其中,lowmem_minfree保存空闲内存的阈值,单位是一个页面的大小4K, lowmem_adj保存每个阈值对应的优先级。
[0015]Low memory killer主要是根据进程的优先级来判定进程的重要程度。进程的优先级和它的类型以及其被调度的次序有关。在当前空闲内存的大小小于某个阈值(意味着内存不足)时,以该阈值对应的优先级为基准,遍历各个进程,计算每个进程占用内存的大小,找出优先级大于基准优先级的进程,在这些进程中选择优先级最大的进程杀死,如果优先级相同,贝1J选择占用内存最多的进程杀死。图1示出了 Low Memory Killer的流程图。
[0016]Android 平台上的 Low Memory Killer,相较 Linux 平台原生的 00M Killer 更为主动,但是其策略采用的是每次仅仅杀死一个进程的方法,无法满足系统连续大内存分配的需求。

【发明内容】

[0017]本申请提供了应用于安卓平台的进程清除方法和装置,以实现在短时间内回收多个进程来换取足够内存,满足系统连续大内存分配的需求。
[0018]本申请提供的技术方案包括:
[0019]一种应用于安卓平台的进程清除方法,包括:
[0020]在当前获知内存申请请求时,统计之前一固定时间段的内存分配量;
[0021]在当前的空闲内存小于设定阈值时,依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量;
[0022]根据计算的内存量从当前所有进程中选取至少一个进程添加至待清除进程列表中,以通过清除该待清除进程列表中所有进程来换取空闲内存满足计算的内存量。
[0023]一种应用于安卓平台的进程清除装置,包括:
[0024]内存统计模块,用于在当前获知内存申请请求时,统计之前一固定时间段的内存分配量;
[0025]内存计算模块,用于在当前的空闲内存小于设定阈值时,依据所述内存统计模块统计出的内存分配量计算将来的一设定时间段内可能需要的内存量;
[0026]进程清除模块,用于根据所述内存计算模块计算的内存量从当前所有进程中选取至少一个进程添加至待清除进程列表中,以通过清除该待清除进程列表中所有进程来换取空闲内存满足计算的内存量。
[0027]由以上技术方案可以看出,本发明中,通过统计之前一固定时间段的内存分配量,并依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量,根据计算的内存量选择系统中某些进程予以清除,以换取更多空闲内存满足所述计算的内存量,能够实现在短时间内回收多个进程来换取足够内存,满足系统连续大内存分配的需求。
[0028]进一步地,本发明,相比于现有进程清除方法,相同状况之下,应用本发明,系统杀死的进程数量大大减少,系统内存使用量也有所降低,且本发明未对平台的其他性能指标带来任何明显的负面作用。
【专利附图】

【附图说明】
[0029]图1 不出了 Low Memory Killer 的流程图;
[0030]图2为本发明实施例提供的方法流程图;
[0031]图3为本发明实施例提供的装置结构图。
【具体实施方式】
[0032]为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0033]本发明实施例提供的方法包括图2所示流程:
[0034]参见图2,图2为本发明实施例提供的流程图。如图2所示,该流程可包括以下步骤:[0035]步骤201,在当前获知内存申请请求时,统计之前一固定时间段的内存分配量。
[0036]通常,当需要启动一个进程时都会发送内存申请请求,以请求该需要启动的进程所需要的内存。基于此,本步骤201中,当得知有新的内存请求时,就执行步骤201。
[0037]作为本发明一个实施例,步骤201中,所述统计之前一固定时间段的内存分配量包括:
[0038]步骤Al,按照循环统计方式先统计距离当前最近的固定时间段内的内存分配量,如果发现该最近的固定时间段内的至少一个时间段没有按照设定频率分配内存,将该最近的固定时间段内没有按照设定频率分配内存的时间段作为当前时间段,将该最近的固定时间段作为当前固定时间段;
[0039]步骤A2,从当前固定时间段内排除当前时间段,并从当前固定时间段之前的时间选择最近、按照设定频率分配内存、且大小与当前时间段相等的一段时间替代当前时间段包含至当前固定时间段内,判断最近的固定时间段内是否还存在没有按照设定频率分配内存的时间段,如果是,返回步骤Al中将该最近的固定时间段内没有按照设定频率分配内存的时间段作为当前时间段的操作,并执行步骤A2。
[0040]以固定时间段为I分钟、且I分钟内内存分配量都是按照每5秒分配一次内存的频率为例,则在当前获知内存请求时,就统计距离当前最近的I分钟内的内存分配量,结果发现在该最近的I分钟的前20秒都没有按照每5秒分配一次内存的频率分配内存,而其他40秒都是按照每5秒分配一次内存的频率分配内存,则从该最近的I分钟开始再向前统计20秒内的内存分配量,结果发现在该20秒按照每5秒分配一次内存的频率分配内存,则就将该20秒的内存分配量和之前已统计的40秒内的内存分配量作为I分钟内的内存分配量。
[0041]步骤202,在当前的空闲内存小于设定阈值时,依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量。
[0042]作为本发明的一个实施例,在当前的空闲内存大于或等于设定阈值时,就意味着空闲内存可能会满足所述内存申请请求,没有必要执行本发明杀死已经运行的进程,可按照现有内存分配方式处理获知的内存申请请求。
[0043]本步骤202中,将来的一设定时间段是在当前时间之后的一时间段。
[0044]作为本发明的一个实施例,本步骤202中,所述依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量包括:
[0045]按照线性预测方式或者非线性预测方式依据统计出的内存分配量预测将来的一设定时间段内可能需要的内存量。
[0046]假如步骤201中的固定时间段为m,本步骤202中的设定时间段为n,则,
[0047]以线性预测方式为例,若步骤201统计出在时间段m内分配内存数量为k,则预计未来设定时间段η内分配的内存数量应为k/m*n。
[0048]以非线性预测方式为例,先将固定时间段m分为P段(P为大于O的整数),每段时间内分配的内存数量分别为kl,k2,一,kp,各个时间段的加权系数为wl,w2,一,wp,那么未来设定时间段η内的内存分配量可为:
[0049](kl*wl+k2*w2+...+k0*wp)/m*n ;
[0050]需要说明的是,本发明中,线性预测方式或者非线性预测方式只是本发明预测将来的一设定时间段内可能需要的内存量的方式,并非限定本发明,本发明完全可以采用其他方式预测将来的一设定时间段内可能需要的内存量的方式。
[0051]步骤203,根据计算的内存量从当前所有进程中选取至少一个进程添加至待清除进程列表中,以通过清除该待清除进程列表中所有进程来换取空闲内存满足计算的内存量。
[0052]作为本发明一个实施例,步骤203中,根据计算的内存量从当前所有进程中选取至少一个进程添加至待清除进程列表中包括:
[0053]B1,根据计算的内存量遍历当前所有进程以选取优先级最低的进程;
[0054]B2,识别选取的优先级最低的进程数量是否大于1,如果是,则从该选取的优先级最低的进程中选取占用内存量最大的进程作为待选进程,如果否,直接将选取的优先级最低的进程作为待选进程;
[0055]B3,判断待选进程的数量是否达到设定的进程上限阈值,如果是,将待选进程添加至待清除进程列表中,结束当前流程,如果否,执行步骤B4 ;
[0056]B4,判断待选进程所占用的内存量是否满足所述计算的内存量,如果是,将待选进程添加至待清除进程列表中,结束当前流程,如果否,遍历当前所有进程中除待选进程之外的其他进程以选取优先级最低的进程,并返回步骤B2。
[0057]作为本发明一个实施例,本步骤204中,所述以通过清除该待清除进程列表中所有进程来换取空闲内存满足计算的内存量包括:
[0058]一次性杀死待清除进程列表中所有进程,以使得被杀死的进程所占用的内存量释放满足所述计算的内存量。
[0059]如此,通过上述步骤201至步骤203,即实现了通过统计之前一固定时间段的内存分配量,并依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量,根据计算的内存量选择系统中某些进程予以清除,以换取更多空闲内存满足所述计算的内存量。
[0060]优选地,在上面描述中,当在一次性杀死待清除进程列表中所有进程之后,清除待清除进程列表中记录的所有进程。
[0061]至此,完成图2所示流程。
[0062]为体现本本发明提供的方法的效果,本发明以在三星Android智能手机平台SHV-1337上采用本发明和现有进程清除方法,结果如下表所示:
【权利要求】
1.一种应用于安卓平台的进程清除方法,其特征在于,该方法包括: 在当前获知内存申请请求时,统计之前一固定时间段的内存分配量; 在当前的空闲内存小于设定阈值时,依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量; 根据计算的内存量从当前所有进程中选取至少一个进程添加至待清除进程列表中,以通过清除该待清除进程列表中所有进程来换取空闲内存满足计算的内存量。
2.根据权利要求1所述的方法,其特征在于,所述统计之前一固定时间段的内存分配量包括: 步骤Al,按照循环统计方式先统计距离当前最近的固定时间段内的内存分配量,如果发现该最近的固定时间段内的至少一个时间段没有按照设定频率分配内存,将该最近的固定时间段内没有按照设定频率分配内存的时间段作为当前时间段,将该最近的固定时间段作为当前固定时间段; 步骤A2,从当前固定时间段内排除当前时间段,并从当前固定时间段之前的时间选择最近、按照设定频率 分配内存、且大小与当前时间段相等的一段时间替代当前时间段包含至当前固定时间段内,判断最近的固定时间段内是否还存在没有按照设定频率分配内存的时间段,如果是,返回步骤Al中将该最近的固定时间段内没有按照设定频率分配内存的时间段作为当前时间段的操作,并执行步骤A2。
3.根据权利要求1所述的方法,其特征在于,所述依据统计出的内存分配量计算将来的一设定时间段内可能需要的内存量包括: 按照线性预测方式或者非线性预测方式依据统计出的内存分配量预测将来的一设定时间段内可能需要的内存量。
4.根据权利要求1所述的方法,其特征在于,所述根据计算的内存量从当前所有进程中选取至少一个进程添加至待清除进程列表中包括: BI,根据计算的内存量遍历当前所有进程以选取优先级最低的进程; B2,识别选取的优先级最低的进程数量是否大于1,如果是,则从该选取的优先级最低的进程中选取占用内存量最大的进程作为待选进程,如果否,直接将选取的优先级最低的进程作为待选进程; B3,判断待选进程的数量是否达到设定的进程上限阈值,如果是,将待选进程添加至待清除进程列表中,结束当前流程,如果否,执行步骤B4 ; B4,判断待选进程所占用的内存量是否满足所述计算的内存量,如果是,将待选进程添加至待清除进程列表中,结束当前流程,如果否,遍历当前所有进程中除待选进程之外的其他进程以选取优先级最低的进程,并返回步骤B2。
5.根据权利要求1或4所述的方法,其特征在于,所述以通过清除该待清除进程列表中所有进程来换取空闲内存满足计算的内存量包括: 一次性杀死待清除进程列表中所有进程,以使得被杀死的进程所占用的内存量释放满足所述计算的内存量。
6.根据权利要求5所述的方法,其特征在于,该方法进一步包括: 在一次性杀死待清除进程列表中所有进程之后,清除待清除进程列表中记录的所有进程。
7.一种应用于安卓平台的进程清除装置,其特征在于,该装置包括: 内存统计模块,用于在当前获知内存申请请求时,统计之前一固定时间段的内存分配量; 内存计算模块,用于在当前的空闲内存小于设定阈值时,依据所述内存统计模块统计出的内存分配量计算将来的一设定时间段内可能需要的内存量; 进程清除模块,用于根据所述内存计算模块计算的内存量从当前所有进程中选取至少一个进程添加至待清除进程列表中,以通过清除该待清除进程列表中所有进程来换取空闲内存满足计算的内存量。
8.根据权利要求7所述的装置,其特征在于,所述内存统计模块通过以下步骤Al、步骤A2统计之前一固定时间段的内存分配量包括: 步骤Al,按照循环统计方式先统计距离当前最近的固定时间段内的内存分配量,如果发现该最近的固定时间段内的至少一个时间段没有按照设定频率分配内存,将该最近的固定时间段内没有按照设定频率分配内存的时间段作为当前时间段,将该最近的固定时间段作为当前固定时间段; 步骤A2,从当前固定时间段内排除当前时间段,并从当前固定时间段之前的时间选择最近、按照设定频率分配内存、且大小与当前时间段相等的一段时间替代当前时间段包含至当前固定时间段内,判断最近的固定时间段内是否还存在没有按照设定频率分配内存的时间段,如果是,返回步骤Al中将该最近的固定时间段内没有按照设定频率分配内存的时间段作为当前时间段的操作,并执行步骤A2。
9.根据权利要求7所述的装置,其特征在于,所述内存计算模块依据所述内存统计模块统计出的内存分配量计算将来的一设定时间段内可能需要的内存量包括: 按照线性预测方式或者非线性预测方式依据统计出的内存分配量预测将来的一设定时间段内可能需要的内存量。
10.根据权利要求7所述的装置,其特征在于,所述进程清除模块根据所述内存计算模块计算的内存量并采用步骤BI至步骤B4从当前所有进程中选取至少一个进程添加至待清除进程列表中包括: BI,根据计算的内存量遍历当前所有进程以选取优先级最低的进程; B2,识别选取的优先级最低的进程数量是否大于1,如果是,则从该选取的优先级最低的进程中选取占用内存量最大的进程作为待选进程,如果否,直接将选取的优先级最低的进程作为待选进程; B3,判断待选进程的数量是否达到设定的进程上限阈值,如果是,将待选进程添加至待清除进程列表中,结束当前流程,如果否,执行步骤B4 ; B4,判断待选进程所占用的内存量是否满足所述计算的内存量,如果是,将待选进程添加至待清除进程列表中,结束当前流程,如果否,遍历当前所有进程中除待选进程之外的其他进程以选取优先级最低的进程,并返回步骤B2。
【文档编号】G06F9/50GK103544063SQ201310461655
【公开日】2014年1月29日 申请日期:2013年9月30日 优先权日:2013年9月30日
【发明者】潘影波, 刘桦, 金学烈, 李文洸 申请人:三星电子(中国)研发中心, 三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1