内存的管理方法及装置制造方法

文档序号:6543498阅读:120来源:国知局
内存的管理方法及装置制造方法
【专利摘要】本发明涉及一种内存的管理方法,包括内存释放及断电步骤,将释放的内存放入空闲内存池中,若空闲内存池中的内存大于设定阈值,从空闲内存池中申请大块内存,对申请到的大块内存进行断电并放入断电内存池中;内存申请及分配步骤,在接收到应用申请内存的请求后,若空闲内存池中的内存满足该应用的需求,从空闲内存池中申请相应内存并分配给该应用。由于对处于空闲状态的内存进行断电处理,降低内存的功耗;由于在空闲内存池中保留小于设定阈值的空闲内存,有效保证少量内存需求的应用对内存的需求。此外,本发明还提供一种内存的管理装置。
【专利说明】内存的管理方法及装置
【技术领域】
[0001]本发明涉及计算机【技术领域】,特别涉及一种内存的管理方法及其装置。
【背景技术】
[0002]由于GPU、Camera及HDMI等复杂场景应用需要大量的连续内存块以保证其正常运行,现有做法是采用大内存保留机制,即为这些复杂场景预留大量的连续内存块,这部分连续内存块平时不使用。这种做法不仅占用大量的连续内存块,特别是不经常使用复杂场景时,造成内存的大量空闲浪费,而且需要消耗一定的电能,增加整个系统的功耗。此外,在内存使用过程,为了保证内存中的数据不丢失,需要不断地对内存进行刷新,对处于空闲状态的内存也不断地进行刷新,增加了系统不必要的功耗。上述问题对移动设备影响特别明显,随着内存的增大,带来快速体验的同时,增加内存对功耗的需求。

【发明内容】

[0003]本发明的主要目的是提供一种内存的管理方法,旨在降低内存的功耗。
[0004]本方明的另一目的是提供一种内存的管理装置,旨在降低内存的功耗。
[0005]为了实现上述主要目的,本发明提供的内存的管理方法包括内存释放及断电步骤,将释放的内存放入空闲内存池中,若空闲内存池中的内存大于设定阈值,从空闲内存池中申请大块内存,对申请到的大块内存进行断电并放入断电内存池中;内存申请及分配步骤,在接收到应用申请内存的请求后,若空闲内存池中的内存满足该应用的需求,从空闲内存池中申请相应内存并分配给该应用。
[0006]由以上方案可见,将系统应用释放的内存放入空闲内存池中,当空闲内存池中的内存大于设定阈值时,从空闲内存池中申请大块内存块,对其进行断电并放入断电内存池中;所以在空闲内存池中保留着小于设定阈值的内存处于运行状态,有效地保证少量内存需求应用的正常运行,其中设定阈值可以根据用户对使用情况自行进行调整设定,也可以系统根据应用对内存的使用情况进行调整设定;当空闲内存池中的内存超过设定阈值时,从中申请大块内存块进行断电,有效地降低了内存的功耗,进而降低系统的功耗,其中大块内存块为空闲内存池中大块的连续内存块,优选为最大的连续内存块。
[0007]—个具体方案为,在内存申请及分配步骤中,若空闲内存池中的内存不能满足应用的需求,且空闲内存池与断电内存池中的内存一起能够满足该应用的需求,从断电内存池中申请相应内存,对申请到的内存供电、释放并放入空闲内存池中,从空闲内存池中申请相应内存并分配给该应用。
[0008]由以上方案可见,当空闲内存池中的内存不能满足应用的需求时,则从断电内存池中申请相应的内存块,保证应用需求的同时降低内存的功耗。
[0009]另一个具体的方案为,在内存申请及分配步骤中,若空闲内存池与断电内存池中的内存一起不能满足应用的需求,则对断电内存池中的所有内存供电、释放及放入空闲内存池中,并启动内存回收,将回收的内存放入空闲内存池中,从空闲内存池中申请相应内存并分配给该应用。
[0010]由以上方案可见,当应用需要申请大量内存时,将断电内存池中的所有内存进行供电并释放,并启动内存回收,从而可以有效地保证应用对大量内存的需求。
[0011 ] 更具体的方案为,应用申请的内存为连续内存块,在内存申请及分配步骤中,从空闲内存池中给该应用申请及分配相应内存前,若空闲内存池中没有满足需要的连续内存块,从空闲内存池中生成满足应用需求的连续内存块。通过生成连续内存块以满足应用对连续内存块的需求。
[0012]具体的方案为,申请内存的应用为复杂场景应用;在内存申请及分配步骤中,若断电内存池中有对应的连续内存块,从断电内存池中申请该连续内存块,并供电、释放及放入空闲内存池中,从空闲内存池中申请该连续内存块及分配给所述应用。对于断电内存池中有该应用先前使用并释放的连续内存块或大于需求的连续内存块,直接出断电内存池中申请相应的连续内存块,保证复杂场景应用对内存需求的速度,同时降低内存的功耗。
[0013]为了实现上述另一目的,本发明提供的内存的管理装置包括第一判断模块,用于判断将释放的内存放入空闲内存池中后,空闲内存池中的内存是否大于设定阈值;断电模块,用于当第一判断模块判断出空闲内存池中的内存大于设定阈值时,从空闲内存池中申请大块内存,对申请到的大块内存进行断电并放入断电内存池中;第二判断模块,用于在接收到应用申请内存的请求后,判断空闲内存池中的内存是否满足该应用的需求;第一操作模块,用于当第二判断模块判断出空闲内存池中的内存满足应用的需求时,从空闲内存池中申请相应的内存并分配给该应用。
[0014]一个具体的方案为,上述内存的管理装置还包括:第三判断模块,用于当第二判断模块判断出空闲内存池中的内存不能满足应用的需求时,判断空闲内存池与断电内存池中的内存一起是否满足该应用的需求;第二操作模块,用于当第三判断模块判断出空闲内存池与断电内存池中的内存一起能够满足所述应用的需求时,从断电内存池中申请相应内存,对申请到的内存供电、释放并放入空闲内存池中,从空闲内存池中申请相应内存并分配给该应用。
[0015]另一个具体的方案为,该内存的管理装置还包括:第三操作模块,用于当第三判断模块判断出空闲内存池与断电内存池中的内存一起不能满足应用的需求时,对断电内存池中的所有内存供电、释放及放入空闲内存池中,并启动内存回收,将回收的内存放入空闲内存池中,从空闲内存池中申请相应内存并分配给该应用。
[0016]更具体的方案为,应用申请的内存为连续内存块,上述内存的管理装置还包括第四判断模块及第四操作模块;其中第四判断模块用于在给应用从空闲内存池申请并分配相应内存块前,判断空闲内存池中是否有满足该应用的需求的连续内存块;第四操作模块用于在第四判断模块判断出空闲内存池没有满足该应用的需求的连续内存块时,从空闲内存池中生成满足该应用的需求的连续内存块。
[0017]具体的方案为,应用为复杂场景应用,上述内存的管理装置还包括第五判断模块及第五操作模块;在接收到复杂场景应用申请内存后,第五判断模块用于判断断电内存池中是否有对应的连续内存块;第五操作模块,用于当第五判断模块判断出断电内存池中有对应的连续内存块时,从断电内存池中申请该连续内存块,并供电、释放及放入空闲内存池中,从空闲内存池中申请该连续内存块并分配给该应用。【专利附图】

【附图说明】
[0018]图1是本发明内存的管理方法第一实施例的工作流程图;
图2是本发明内存的管理装置第一实施例的结构框图;
图3是本发明内存的管理装置第二实施例的结构框图。
[0019]以下结合附图及具体实施例对本发明作进一步的说明。
【具体实施方式】
[0020]本发明的【具体实施方式】以Linux应用为例对本发明的构思作进一步的说明,本发明构思也适用于其他操作系统,在此不再赘述。
[0021]内存的管理方法第一实施例
参见图1,系统请求为应用申请分配非连续的内存块,本内存的管理方法如下:
请求管理步骤S11,在接收到分配释放内存请求时,若其请求为释放内存的请求,跳至内存释放步骤S12,若请求为应用申请内存的请求,跳至内存分配步骤S21。
[0022]内存释放步骤S12,释放内存并将释放的内存放入空闲内存池中,跳至第一判断步骤 S13。
[0023]第一判断步骤S13,判断空闲内存池中的内存是否达到设定阈值,若达到,跳至内存申请步骤S14 ;若没有达到设定阈值,结束此轮内存释放操作。设定阈值可以由用户根据需要进行设置;也可以由系统根据内存的使用情况进行设置,例如前一个统计周期内应用申请的内存对时间的统计平均值,该统计周期可长可短,以满足一些只申请少量内存的应用的申请。
[0024]内存申请步骤S14,通过CMA从空闲内存池中申请大块内存,并跳至断电步骤S15。其中大块内存优选为空闲内存池中最大的连续内存块。
[0025]断电步骤S15,对申请到的大块内存块进行断电。
[0026]内存分配步骤S21,获得空闲内存池中的内存情况,跳至第二判断步骤S22。
[0027]第二判断步骤S22,判断内存池中的内存是否满足应用的需求,若满足,跳至操作步骤S23 ;若不满足,跳至第三判断步骤S31。
[0028]第三判断步骤S31,判断断电内存池的内存与空闲内存池中的内存一起是否满足应用的需求,若满足,跳至供电步骤S32 ;若不满足,跳至内存回收步骤S41。
[0029]供电步骤S32,从断电内存池中申请相应的内存并对其进行供电,跳至释放步骤S33。
[0030]释放步骤S33,通过CMA对恢复供电的内存进行释放并放入空闲内存池中,跳至操作步骤S23。
[0031 ] 内存回收步骤S41,对断电内存池中的所有供电、释放并放入空闲内存池中,启动Linux标准内存回收,跳至操作步骤S23。
[0032]操作步骤S23,从空闲内存池中申请相应内存并分配给应用。
[0033]其中,在内存初始化时,并没有对内存进行断电处理,随着应用申请与释放内存而产生断电内存,整个内存中处于空闲状态的内存构成空闲内存池,处于断电状态的内存构成断电内存池。[0034]内存的管理方法第二实施例
作为对本发明内存的管理方法第二实施例的说明,以下仅对与上述内存的管理方法第一实施例的不同之处进行说明,其中应用为复杂场景应用,申请的是连续内存块。
[0035]在请求管理步骤Sll接收复杂场景应用申请连续内存块后,不是跳至内存分配步骤S21,而是跳至第五判断步骤。
[0036]第五判断步骤,判断断电内存池中是否有相应的连续内存块,即断电内存池中有该应用先前使用并释放的连续内存块或大于需求的连续内存块,若有,跳至第五操作步骤,若没有,跳至内存分配步骤S21。
[0037]第五操作步骤,从断电内存池中申请该连续内存块,并供电、释放及放入空闲内存池中,从空闲内存池中申请该连续内存块并分配给该复杂场景应用。
[0038]在完成其他步骤之后及在进行操作步骤S23之前,进行第四判断步骤。
[0039]第四判断步骤,判断空闲内存池中是否有满足该复杂场景应用的需求的连续内存块,若有,跳至操作步骤S23,若没有,跳至第四操作步骤。
[0040]第四操作步骤,从空闲内存池中生成满足复杂场景应用的需求的连续内存块,跳至操作步骤S23。
[0041]内存的管理装置第一实施例
参见图2,本发明内存的管理装置I由请求管理模块10、内存释放模块101、第一判断模块11、断电模块111、第二判断模块12、第一操作模块121、第三判断模块13、第二操作模块131及第三操作模块132构成。
[0042]请求管理模块10用于管理系统的请求,当系统请求为释放内存时,将释放内存请求发送给内存释放模块101,当系统请求为应用申请非连续内存的请求时,将申请内存的请求发送给第二判断模块12。
[0043]内存释放模块101用于在接收到请求管理模块10发送的释放内存请求后释放内存,并将释放的内存放入空闲内存池中。
[0044]第一判断模块11用于判断内存释放模块101将释放的内存放入空闲内存池中后,空闲内存池中的内存是否大于设定阈值。设定阈值可以由用户根据需要进行设置;也可以由系统根据内存的使用情况进行设置,例如前一个统计周期内应用申请内存对时间的统计平均值,该统计周期可长可短;以满足一些只申请少量内存的应用的申请。
[0045]断电模块111用于当第一判断模块11判断出空闲内存池中的内存大于设定阈值时,从空闲内存池中申请大块内存,对申请到的大块内存进行断电并放入断电内存池中。其中大块内存为优选其中最大的连续内存块。
[0046]第二判断模块12用于在接收到请求管理模块20发送的应用申请内存的请求后,判断空闲内存池中的内存是否满足该应用的需求。
[0047]第一操作模块121用于当第二判断模块12判断出空闲内存池中的内存满足应用的需求时,从空闲内存池中申请相应的内存并分配给该应用。
[0048]第三判断模块13用于当第二判断模块12判断出空闲内存池中的内存不能满足应用的需求时,判断空闲内存池与断电内存池中的内存一起是否满足该应用的需求。
[0049]第二操作模块131用于当第三判断模块13判断出空闲内存池与断电内存池中的内存一起能够满足应用的需求时,从断电内存池中申请相应内存,对申请到的内存供电、释放并放入空闲内存池中,从空闲内存池中申请相应内存并分配给该应用。
[0050]第三操作模块132用于当第三判断模块13判断出空闲内存池与断电内存池中的内存一起不能满足所述应用的需求时,启动内存回收,并将回收的内存放入空闲内存池中,从空闲内存池中申请相应内存并分配给该应用。
[0051]内存的管理装置第二实施例
参见图3,本发明内存的管理装置2由请求管理模块20、内存释放模块201、第一判断模块21、断电模块211、第五判断模块25、第五操作模块251、第二判断模块22、第一操作模块221、第三判断模块23、第二操作模块231及第三操作模块232构成。
[0052]请求管理模块20用于管理系统的请求,当系统请求为释放内存时,将释放内存请求发送给内存释放模块201,当系统请求为复杂场景应用申请连续内存块的请求时,将申请内存的请求发送给第五判断模块25。
[0053]内存释放模块201用于在接收到请求管理模块20发送的释放内存请求后释放内存,并将释放的内存放入空闲内存池中。
[0054]第一判断模块21用于判断内存释放模块201将释放的内存放入空闲内存池中后,空闲内存池中的内存是否大于设定阈值。设定阈值可以由用户根据需要进行设置;也可以由系统根据内存的使用情况进行设置,例如前一个统计周期内应用申请内存对时间的统计平均值,该统计周期可长可短;以满足一些只申请少量内存的应用的申请。
[0055]断电模块211用于当第一判断模块21判断出空闲内存池中的内存大于设定阈值时,从空闲内存池中申请大块内存,对申请到的大块内存进行断电并放入断电内存池中。其中大块内存优选为空闲内存池中最大的连续内存块。
[0056]第五判断模块25用于判断断电内存池中是否有相应的连续内存块,即断电内存池中有该复杂场景应用先前使用并释放的连续内存块或大于需求的连续内存块。
[0057]第五操作模块251用于当第五判断模块25判断出断电内存池中有相应的连续内存块时,从断电内存池中申请该连续内存块,并供电、释放及放入空闲内存池中,从空闲内存池中申请该连续内存块并分配给该复杂场景应用。
[0058]第二判断模块22用于当第五判断模块25判断出断电内存池中没有相应的连续内存块后,判断空闲内存池中的内存是否满足该应用的需求。
[0059]第一操作模块221用于当第二判断模块22判断出空闲内存池中的内存满足应用的需求时;判断空闲内存池中是否有满足需求的连续内存块;若有,从空闲内存池中申请相应内存并分配给该应用;若没有,从该空闲内存池中生成满足需求的连续内存块并分配给该应用。
[0060]第三判断模块23用于当第二判断模块22判断出空闲内存池中的内存不能满足应用的需求时,判断空闲内存池与断电内存池中的内存一起是否满足该应用的需求。
[0061]第二操作模块231用于当第三判断模块23判断出空闲内存池与断电内存池中的内存一起能够满足应用的需求时,从断电内存池中申请相应内存,对申请到的内存供电、释放并放入空闲内存池中;判断空闲内存池中是否有满足需求的连续内存块,若有从空闲内存池中申请相应内存块并分配给该应用,若没有,从该空闲内存池中生成满足需求的连续内存块并分配给该应用。
[0062]第三操作模块232用于当第三判断模块23判断出空闲内存池与断电内存池中的内存一起不能满足所述应用的需求时,启动内存回收,并将回收的内存放入空闲内存池中;判断空闲内存池中是否有满足需求的连续内存块,若有从空闲内存池中申请相应内存并分配给该应用,若没有,从该空闲内存池中生成满足需求的连续内存块并分配给该应用。
【权利要求】
1.内存的管理方法, 其特征在于,包括: 内存释放及断电步骤,将释放的内存放入空闲内存池中,若空闲内存池中的内存大于设定阈值,从空闲内存池中申请大块内存,对申请到的大块内存进行断电并放入断电内存池中; 内存申请及分配步骤,在接收到应用申请内存的请求后,若空闲内存池中的内存满足所述应用的需求,从空闲内存池中申请相应内存并分配给所述应用。
2.根据权利要求1所述内存的管理方法,其特征在于: 所述内存申请及分配步骤中,若空闲内存池中的内存不能满足所述应用的需求,且空闲内存池与断电内存池中的内存一起能够满足所述应用的需求,从断电内存池中申请相应内存,对申请到的内存供电、释放并放入空闲内存池中,从空闲内存池中申请相应内存并分配给所述应用。
3.根据权利要求2所述内存的管理方法,其特征在于: 所述内存申请及分配步骤中,若空闲内存池与断电内存池中的内存一起不能满足所述应用的需求,则对断电内存池中的所有内存供电、释放及放入空闲内存池中,并启动内存回收,将回收的内存放入空闲内存池中,从空闲内存池中申请相应内存并分配给所述应用。
4.根据权利要求1 至3任一项所述内存的管理方法,其特征在于: 所述应用申请的内存为连续内存块;所述内存申请及分配步骤中,在从空闲内存池中给所述应用申请及分配相应内存前,若空闲内存池中没有满足需要的连续内存块,从空闲内存池中生成满足所述应用需求的连续内存块。
5.根据权利要求4所述内存的管理方法,其特征在于: 所述应用为复杂场景应用; 在所述内存申请及分配步骤中,若断电内存池中有对应的连续内存块,从断电内存池中申请该连续内存块,并供电、释放及放入空闲内存池中,从空闲内存池中申请该连续内存块并分配给所述应用。
6.内存的管理装置, 其特征在于,包括: 第一判断模块,用于判断将释放的内存放入空闲内存池中后,空闲内存池中的内存是否大于设定阈值; 断电模块,用于当所述第一判断模块判断出空闲内存池中的内存大于设定阈值时,从空闲内存池中申请大块内存,对申请到的大块内存进行断电并放入断电内存池中; 第二判断模块,用于在接收到应用申请内存的请求后,判断空闲内存池中的内存是否满足所述应用的需求; 第一操作模块,用于当所述第二判断模块判断出空闲内存池中的内存满足所述应用的需求时,从空闲内存池中申请相应的内存并分配给所述应用。
7.根据权利要求6所述内存的管理装置,其特征在于所述内存的管理装置还包括: 第三判断模块,用于当所述第二判断模块判断出空闲内存池中的内存不能满足所述应用的需求时,判断空闲内存池与断电内存池中的内存一起是否满足所述应用的需求; 第二操作模块,用于当所述第三判断模块判断出空闲内存池与断电内存池中的内存一起能够满足所述应用的需求时,从断电内存池中申请相应内存,对申请到的内存供电、释放并放入空闲内存池中,从空闲内存池中申请相应内存并分配给所述应用。
8.根据权利要求7所述内存的管理装置,其特征在于所述内存的管理装置还包括: 第三操作模块,用于当所述第三判断模块判断出空闲内存池与断电内存池中的内存一起不能满足所述应用的需求时,对断电内存池中的所有内存供电、释放及放入空闲内存池中,并启动内存回收,将回收的内存放入空闲内存池中,从空闲内存池中申请相应内存并分配给所述应用。
9.根据权利要求6至8任一项所述内存的管理装置,其特征在于: 所述应用申请的内存为连续内存块,所述内存的管理装置还包括第四判断模块及第四操作模块; 所述第四判断模块用于在给所述应用从空闲内存池申请并分配相应内存前,判断空闲内存池中是否有满足所述应用的需求的连续内存块; 所述第四操作模块用于在所述第四判断模块判断出空闲内存池没有满足所述应用的需求的连续内存块时,从空闲内存池中生成满足所述应用的需求的连续内存块。
10.根据权利要求9所述内存的管理装置,其特征在于: 所述应用为复杂场景应用,所述内存的管理装置还包括第五判断模块及第五操作模块; 在接收到复杂场景应用申请内存后,所述第五判断模块用于判断断电内存池中是否有对应的连续内存块; 第五操作模块,用于当所述第五判断模块判断出断电内存池中有对应的连续内存块时,从断电内存池中申请该连续内存块,并供电、释放及放入空闲内存池中,从空闲内存池中申请该连续内存块并分配给所述应用。
【文档编号】G06F12/02GK103885569SQ201410145372
【公开日】2014年6月25日 申请日期:2014年4月11日 优先权日:2014年4月11日
【发明者】刘刚 申请人:珠海全志科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1