一种内存管理方法_3

文档序号:8543746阅读:来源:国知局
217,再执行步骤S213,终端还可以的并行地执行步骤S217和步骤S213。对于步骤S217和步骤S213的执行顺序,本发明实施例不作限制。
[0075]实施本发明实施例,通过遍历预设内存中的大小等于目标区域的容量的内存片段,并从所述内存片段中选取包含第二类程序引用的活动对象最多的内存片段作为目标区域,之后将所述预设内存中的第一类程序引用的活动对象移动到所述目标区域中,可实现在将所述第一类程序引用的活动对象被移动到目标区域中之后,目标区域外的内存碎片最少。
[0076]参见图3,是本发明实施例提供的内存管理方法的第三实施例的流程图,该方法包括:
[0077]步骤S301:接收清理指令。
[0078]具体的,可参见图1实施例的步骤SlOl中的内容,这里不再赘述。
[0079]步骤S303:响应所述清理指令,在所述预设内存中,分析出第一类程序引用的活动对象和第二类程序引用的活动对象。
[0080]具体的,可参见图1实施例的步骤S103中的内容,这里不再赘述。
[0081]步骤S305:遍历所述预设内存中的大小等于所述目标区域的容量的内存片段。
[0082]具体的,可参见图2实施例的步骤S205中的内容,这里不再赘述。
[0083]步骤S307:各自计算出所述内存片段外的活动对象移动至所述内存片段的移动时间总量。
[0084]具体的,对于所述预设内存中包含的大小等于所述目标区域的内存片段,例如,图2A所示的(N-M+1)个内存片段,终端可分别计算出每一个所述内存片段外的活动对象移动至所述内存片段的移动时间总量。可选的,具体实现中,终端可分别计算出每一个所述内存片段外的所述第一类程序引用的活动对象移动至所述内存片段的移动时间总量。
[0085]需要说明的,本发明实施例涉及的活动对象的移动时间可以与该活动对象的移动次数成正比。也就是说,所述目标区域外的活动对象越分散,所述目标区域外的活动对象全部移动到所述目标区域中的移动时间就越多。实际应用,活动对象的移动时间还可以与其他因素有关,这里不作限制。
[0086]步骤S309:将对应的移动时间总量最小的所述内存片段选定为所述目标区域。
[0087]具体的,举例来说,如图2A所示,如果所述(N-M+1)个内存片段中的第I个内存片段外的活动对象移动至第I个内存片段的耗时最少,则将所述(N-M+1)个内存片段中的第I个内存片段选定为所述目标区域。可理解的,在对所述预设内存进行碎片整理时,移动活动对象耗时越少,对运行在所述预设内存中的程序的影响就越小。
[0088]步骤S311:将所述第一类程序引用的活动对象移动至所述目标区域,并将所述第一类程序引用的活动对象在移动之前所占内存释放。
[0089]具体的,可参见图1实施例的步骤S107中的内容,这里不再赘述。
[0090]步骤S313:监测运行在所述目标区域内的所述第二类程序是否变成所述第一类程序。
[0091]可理解的,根据前述步骤S305至步骤S309可知,所述目标区域中可能包含有所述第二类程序引用的活动对象,所述第二类程序引用的活动对象会将所述目标区域分隔成离散的内存碎片。基于程序的运行状态是动态的,当运行在所述目标区域中的所述第二类程序的用户交互程度降低至低于预先设置的交互度阈值时,终端可判定运行在所述目标区域中的所述第二类程序变成了所述第一类程序。
[0092]具体的,当运行在所述目标区域中的所述第二类程序变成了所述第一类程序时,可执行步骤S315,否则,可执行步骤S317,实际应用中,还可以重复执行步骤S313,这里不作限制。
[0093]步骤S315:将转变成所述第一类程序的所述第二类程序所引用的活动对象移动至所述目标区域的一端。
[0094]具体的,当运行在所述目标区域中的所述第二类程序变成了所述第一类程序时,则将变成所述第一类程序的所述第二类程序所引用的活动对象移动至所述目标区域的一端,用以整理所述目标区域中的内存碎片,形成连续的空白存储空间。所述目标区域中整理出来的连续空白存储空间可用于连续地存储所述目标区域外的待移动的活动对象。
[0095]步骤S317:监测运行在所述目标区域外的所述第二类程序是否变成所述第一类程序。
[0096]具体的,可参见图2实施例的步骤S217中的内容,这里不再赘述。
[0097]步骤S319:将转变成所述第一类程序的所述第二类程序所引用的活动对象移动至所述目标区域。
[0098]具体的,可参见图2实施例的步骤S219中的内容,这里不再赘述。
[0099]优选的,本发明实施例中,在选取所述目标区域时,终端还可以遍历所述预设内存中的大小等于所述目标区域的容量的内存片段,并且从所述大小等于所述目标区域的容量的内存片段中,选取出大小等于所述目标区域的容量的空白内存片段。如果选取出多个所述空白内存片段,终端可以各自计算出所述空白内存片段外的活动对象移动至所述空白内存片段的移动时间总量,并将对应的移动时间总量最小的所述空白内存片段选定为所述目标区域。
[0100]可理解的,所述目标区域是空白的,可以实现所述目标区域被移动后的所述第一类程序的引用对象连续存储,不会存在内存碎片。并且,所述空白内存片段外的活动对象移动至所述空白内存片段的时间越少,对运行在所述预设内存中的程序的影响就越小。
[0101]优选的,本发明实施例中,在选取所述目标区域时,终端还可以遍历所述预设内存中的大小等于所述目标区域的容量的内存片段,并且从所述大小等于所述目标区域的容量的内存片段中,选取出大小等于所述目标区域的容量且不包含所述第二类程序引用的活动对象的内存片段。如果选取出多个所述内存片段,终端可以各自计算出所述不包含所述第二类程序引用的活动对象的内存片段外的活动对象移动至所述不包含所述第二类程序引用的活动对象的内存片段的移动时间总量,并且将对应移动时间总量最小的所述不包含所述第二类程序引用的活动对象的内存片段选定为所述目标区域。
[0102]可理解的,所述目标区域中不包含所述第二类程序引用的活动对象,可以实现所述目标区域被移动后的所述第一类程序的引用对象连续存储,不会存在内存碎片。并且,所述空白内存片段外的活动对象移动至所述空白内存片段的时间越少,对运行在所述预设内存中的程序的影响就越小。
[0103]进一步的,在上述两种优选实施方式中,终端可持续执行步骤S317,用以整理所述目标区域外的内存碎片,即:将转变成所述第一类程序的所述第二类程序所引用的活动对象移动至所述目标区域。
[0104]实施本发明实施例,通过遍历预设内存中的大小等于目标区域的容量的内存片段,并从所述内存片段中选取活动对象对应的移动时间最少的内存片段作为目标区域,之后将所述预设内存中的第一类程序引用的活动对象移动到所述目标区域中,可实现在将所述第一类程序引用的活动对象被移动到目标区域中,对运行在所述预设内存中程序的影响最小。
[0105]参见图4,是本发明提供的终端的第一实施例的结构示意图,如图4所示的终端40可包括:输入单元401,选择单元403,分析单元405以及移动单元407。其中:
[0106]输入单元401,用于接收清理指令,所述清理指令用于触发清理预设内存;
[0107]分析单元405,用于响应所述清理指令,在所述预设内存中,分析出被第一类程序引用的活动对象和被第二类程序引用的活动对象;所述第一类程序的用户交互度低于或等于预设交互度阈值;所述第二类程序的用户交互度高于所述预设交互度阈值;
[0108]选择单元403,用于从所述预设内存中选取出目标区域;
[0109]移动单元407,用于将所述被第一类程序引用的活动对象移动至所述目标区域,并将所述被第一类程序引用的活动对象在移动之前所占内存释放。
[0110]具体的,所述第一类程序可包括:当前没有占用输入输出端口的程序;或者,运行在后台的程序。所述目标区域的容量大于或等于所述预设内存中的全部活动对
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1