一种内存管理方法及其系统的制作方法

文档序号:6367353阅读:134来源:国知局
专利名称:一种内存管理方法及其系统的制作方法
技术领域
本发明涉及通信领域,尤其涉及一种内存管理方法及其系统。
背景技术
一个软件系统中,内存大部分是动态申请的,即在使用的时候申请内存,使用之后释放内存给系统,以便其他模块使用。在嵌入式系统中,为了保证系统运行效率,系统中运行的所有模块使用相同的内存空间,也就是整个系统的内存统一管理,内存可以被任何一个模块申请使用。这样,一旦某个模块代码的错误出现内存泄漏,或者受到攻击,这个模块可能会将整个系统的内存消耗掉,其它模块申请不到内存,引起整个系统运行异常。嵌入系统中,所有模块共用系统内存。每个模块申请内存的时候,带上模块的标
识。系统将模块的标识记录到系统的内存管理信息部分。可以通过查看系统的内存管理信息,查看哪些模块占用的内存较多,具体占用了多少。由此可见,目前的内存管理机制,对于内存只记录跟踪情况,只能在出现问题后通过管理信息追查到各模块所占用的内存大小,而没有对模块的内存分配进行控制的机制。

发明内容
本发明实施例提供了一种内存管理方法及其系统,用以实现对应用系统中的各模块进行内存分配控制。本发明实施例提供的内存管理方法,包括根据应用系统中的各模块所需内存和重要程度,分别为应用系统中的各模块设置内存分配控制参数;当接收到模块申请内存的请求时,获取为所述模块设置的内存分配控制参数,并根据获取到的内存分配控制参数以及当前内存的使用情况,对所述模块进行内存分配控制。本发明实施例提供的内存管理系统,包括参数设置单元,用于根据应用系统中的各模块所需内存和重要程度,分别为应用系统中的各模块设置内存分配控制参数;内存分配单元,用于当接收到模块申请内存的请求时,获取为所述模块设置的内存分配控制参数,并根据获取到的内存分配控制参数以及当前内存的使用情况,对所述模块进行内存分配控制。本发明实施例的上述实施例通过为应用系统中的各模块设置内存分配控制参数,从而在为模块分配内存时,可根据为该模块设置的内存分配控制参数对该模块的内存分配进行控制,与现有技术相比,实现了对模块的内存分配控制,而不仅仅是记录内存分配结
果O


图I为本发明实施例提供的内存分配流程示意图;图2为本发明实施例提供的内存释放流程示意图;图3为本发明实施例提供的内存管理系统结构示意图。
具体实施例方式本发明实施例为应用系统中的各模块设置内存分配控制参数,使得不会一个模块出现内存泄漏或者受到攻击时,消耗掉整个应用系统的内存,引起整个系统崩溃。下面结合附图对本发明实施例进行详细描述。本实施例中,分别为应用系统中的各模块设置内存分配控制参数,内存分配控制参数用于对相应模块的内存分配控制。内存分配控制参数至少包括相应模块的内存使用上限max_mem_size,该参数可以byte (字节)为单位。—个模块的max_mem_size的取值,可遵循以下原则之一或任意组合
(I) 一个模块的max_mem_size取值要大于该模块极端情况下的内存使用量最大值。(2)max_mem_size的值可以根据分析来设置,比如某个模块的功能主要是保存数据,每条数据占用内存最大IK byte,系统规格保存IOK条数据,再考虑到运行过程中的其他内存使用,这个模块的max_mem_size设为30M比较合适。(3)对于内存占用比较多,但是分配不到内存不会引起系统异常的模块,可将该模块的max_mem_size设置比较大,或者不做限制。(4)对于分配不到内存就会影响整个系统,而且可能会占用内存较多的模块,可在maX_mem_Size缺省值的基础上进行调整。比如,网络设备中,对于板间通信的模块,需要将max_mem_size设置得比缺省值大。在具体实施时,可为各模块设置缺省max_mem_size,然后根据以上原则之一或组合,对缺省设置的maX_mem_Size进行调整。也可以根据实际应用过程中收集到的该模块已申请的内存的最大值进行设置,比如,可以先不限制模块的maX_mem_Size(即对该模块可申请的内存量不做限制),然后模拟该模块使用内存的极端情况,记录该模块内存使用量的最大值,然后将该内存使用量的最大值乘以一个系数作为该模块的maX_mem_Size值。基于以上内存分配控制参数进行内存分配控制的操作可由应用系统中的内存管理系统执行。当某个模块(如模块I)需要申请内存时,模块I向内存管理系统请求申请内存;内存管理系统获取为该模块设置的max_mem_size,并将该max_mem_size与模块I当前白勺内存使用量 current_mem_size 进 比较,若 current_mem_size > max_mem_size,贝U表明该模块可用的内存已经达到上限,此种情况下内存管理系统拒绝为该模块分配内存,并可进一步给出相应的提示信息,返回分配失败;若current_mem_size ( max_mem_size,内存管理系统为模块I分配内存,进一步的根据为模块I分配的内存大小,更新该模块当前的内存使用量 current_mem_size。通过以上描述可以看出,当某个模块受到攻击或者出现内存泄漏的时候,能够通过max_mem_size对该模块的内存分配进行限制,保证该模块不会将整个系统的内存耗尽,而影响系统其他模块的正常运行。当怀疑某个模块对内存不足的情况保护不足的时候,能够将该模块的maX_mem_Size设置较低,从而很快模拟内存不足的情况,还能通过逐个模块设置max_mem_size的方式,找出具体哪个模块有保护不足的情况。在本发明的另一实施例中,为模块设置的内存控制参数中除了 max_mem_size,还可包括系统内存高门限global_mem_gate_high,该参数可以byte为单位,当整个系统内存使用量超过global_mem_gate_high的时候,内存管理系统将不再为这个模块分配内存。—个模块的global_mem_gate_high的取值,可遵循以下原则根据该模块在系统中的重要程度进行设置,重要程度越高,这个值就越大。具体的,如果某个模块分配不到内存,仅仅是部分功能暂时不可用,这个值可以设的低一些;如果某个模块比较重要但内存占用不多(比如命令行模块),则可提高这个参数值来保证该模块内存分配的高优先级;如果分配不到内存会影响整个系统,而且可能会占用内存较多,则可将这个参数值设置得比缺省值大;如果某个模块分配不到内存会引起整个系统瘫痪,则可不对这个值进行限制。模块I申请内存时,内存管理系统获取到模块I的current_mem_size和global_mem_gate_high 之后,若判断 current_mem_size > max_mem_size,或者 global_current_mem_size >系统当前内存使用量global_mem_gate_high,则拒绝为模块I分配内存;否则,为模块I分配内存。 通过以上描述可以看出,在根据max_mem_size进行内存分配控制的基础上,进一步根据global_mem_gate_high进行内存分配控制,使得内存分配更为合理,并进一步降低内存泄露对应用系统的影响。在本发明的另一实施例中,为模块设置的内存控制参数中除了 max_mem_size、global_mem_gate_high,还可包括系统内存低门限global_mem_gate_low,该参数可以byte为单位,当整个系统内存达到过global_mem_gate_high限后,系统内存降到低于global_mem_gate_low之后,才继续为该模块分配内存。此外,内存管理系统还为该模块设置一变量over_high_gate,用来记录该模块的内存分配状态,例如,当系统使用的内存超过global_mem_gate_high的时候,且该模块试图申请过内存,将该变量置位(如将该变量赋值为I)。—个模块的global_mem_gate_low的取值,可遵循以下原则根据该模块在系统中的重要程度进行设置,重要程度越高,这个值就越大,而且global_mem_gate_high ^ global_mem_gate_low。具体的,如果某个模块分配不到内存,仅仅是部分功能暂时不可用,这个值可以设的低一些;如果某个模块比较重要但内存占用不多(比如命令行模块),则可提高这个参数值来保证该模块内存分配的高优先级;如果分配不到内存会影响整个系统,而且可能会占用内存较多,则可将这个参数值设置得比缺省值大;如果某个模块分配不到内存会引起整个系统瘫痪,则需要不对这个值进行限制。模块I申请内存时,内存管理系统获取到模块I的current_mem_size、global_mem_gate_high和global_mem_gate_low之后,若判断满足以下条件之一,则拒绝为模块I分配内存current—mem—size > max—mem—size ;global_current—mem—size > global—mem—gate—high ;over—high_gat = I 且 global_current—mem—size > global—mem—gate_low ;若判断满足以下条件,则为模块I分配内存current—mem—size ^ max—mem—size ;global_current—mem—size ^ global—mem—gate—high ;over—high_gat = 0 或 global_current—mem—size ^ global—mem—gate_low。通过以上描述可以看出,当内存消耗较多的时候,某个模块受到攻击,可以通过global_mem_gate_low 和 global_mem_gate_high 的差值减少系统内存的压力。下面结合本发明的优选实施例,进一步对本发明进行描述。在本发明的优选实施例中,为应用系统中的各模块进行如下定义struct tag_module_attr{ unsigned long module_id ;// 定义模块的唯一标识 module_idunsigned long current_mem_size ;//定义用于记录该模块当前使用的内存大小的变量 current_mem_sizeunsigned long over_high_gate ;//定义用于记录该模块的内存分配状态的变量over_high_gateunsigned long max_mem_size ;//定义该模块允许使用的内存上限unsigned long global_mem_gate_high ;// 定义该模块的系统内存高门限unsigned long global_mem_gate_low ;//定义该模块的系统内存低门限......};上述参数的含义以及设置原则和设置方法,与前述实施例相同,比如max_mem_size为系统可用内存的10%, global_mem_gate_high为系统可用内存的95 %, global_mem_gate_low为系统可用内存的92%。例如,对于一个可用内存为512M的系统,max_mem_size 缺省为 50M, global_mem_gate_high 为 486M, global_mem_gate_low 为 471M。不做特殊调整的模块,内存参数按照缺省值进行设置。再比如内存占用比较多,但是分不到内存不会引起系统异常的模块,将max_mem_size设置比较大,或者不做限制;比如对于网络设备中的路由模块,不修改缺省的global_mem_gate_high 和 global_mem_gate_low ;对于比较重要但内存占用不多的模块,比如命令行模块,通过提高内存门限来保证模块内存分配的高优先级,如将global_mem_gate_high设为100%, global_mem_gate_low设为99%,这样对于一个可用内存512M的系统,global_mem_gate_high实际为512M,global_mem_gate_low实际为507M,这样,当系统中内存所剩无几的时候,可以让其它模块停止申请内存,对于命令行这种重要的模块,还能继续分配内存,继续正常运转;对于内存分配不到会影响整个系统,而且可能会占用内存较多的模块,这些内存参数需要在缺省值的基础上进行调整,比如网络设备中,对于实现板间通信的模块,将max_mem_size、global_mem_gate_high 矛口 global_mem_gate_low 者β设得比缺省值大。当某个模块申请内存时,其流程可如图I所示,包括步骤101,根据申请内存的模块的modulejd(即模块标识),找到系统中记录的为该模块设置的内存分配控制参数。步骤102,读取 max_mem_size,并比较 current_mem_size 和 max_mem_size ;若max_mem_size ! = 0,而且 current_mem_size > max_mem_size,则表明该模块可用的内存已经达到上限,转入步骤103 ;否则转入步骤104。其中,若max_mem_size = O,则表明对该模块的内存使用上限不做限制。
步骤103,给出相应的提示信息,返回分配失败。步骤104,读取 global_mem_gate_high,并比较 global_mem_gate_high 和 global—current_mem_size ;若 global_mem_gate_high ! = O,而且 global_current_mem_size >global_mem_gate_high,则系统已经没有内存给该模块使用,转入步骤105,否则转入步骤106。其中,若global_mem_gate_high = O,则表明对该参数不做限制。步骤105,设置over_high_gate = I,给出相应的提示信息,返回分配失败。步骤IO6,读取 over_high_gate,并比较 global_current_mem_size 和 global—mem_gate_low ;若 over_high_gate = 1,而且 global_current_mem_size > global_mem_gate_loW,则表明系统还不能给该模块分配内存,转入步骤107,否则转入步骤108。步骤107,给出相应的提示信息,返回分配失败。
步骤108,将over_high_gate设置为O,为该模块分配内存,将新分配的内存大小计入current_mem_size和global_current_mem_size,将分配的内存地址返回给该模块。当某个模块释放内存时,其流程可如图2所示,包括步骤201,根据请求释放内存的模块的module_id,找到系统中记录的该模块的内
存信息;步骤202,根据内存信息头中记录的内存大小,将释放的内存大小从current_mem_size 和 global_current_mem_size 中减掉;步骤203,释放这部分内存;步骤204 205,如果该模块的 global_current_mem_size < = global_mem_gate_low,则将 over_high_gate 设置为 O。由于应用系统使用的环境和要求千变万化,用户可能需要根据实际情况修改内存参数的设置。本发明实施例允许用户根据需要对模块的内存分配控制参数进行修改或重新设置。在对模块的内存分配控制参数进行修护或重新设置的时候,需要保证global_mem_gate_low < = global_mem_gate_high。下面分别分析一下修改max_mem_size、global_mem_gate_high 和 global_mem_gate_low三种参数的过程和影响。(I)修改 max_mem_size修改max_mem_size后,若max_mem_size < current_mem_size,则下次为该模块分配内存的时候,图I所示流程中的第一个判断步骤的判断结果为否,直接返回分配失败。修改后max_mem_size,若 max_mem_size > = current_mem_size,则下次为该模块分配内存的时候,图I所示流程中的第一个判断步骤的判断结果为是,进入到后续流程。释放内存的时候,max_mem_size不影响流程。(2)修改 global_mem_gate_high修改 global_mem_gate_high 后,若 global_mem_gate_high < global_current_mem_Size,则下次为该模块分配内存的时候,图I所示流程中的第二个判断步骤的判断结果为否,会设置over_high_gate,并返回分配失败。修改 global_mem_gate_high 后,若 global_mem_gate_high > = global_current_mem_Size,则下次为该模块分配内存的时候,图I所示流程中的第二个判断步骤的判断结果为是,会进入到后续流程。
释放内存的时候,global_mem_gate_high不影响流程。(3)修改 global_mem_gate_low修改global_mem_gate_low后,若over_high_gate = O,则下次为该模块分配内存的时候,图I所示流程中的第三个判断步骤的判断结果为是,进入后续流程,分配内存。修改 global_mem_gate_low 后 ,若 global_mem_gate_low < global_current_mem_size,此时如果over_high_gate = I,则下次为该模块分配内存的时候,图I所示流程中的第三个判断步骤的判断结果为否,返回分配失败。修改 global_mem_gate_low 后,若 global_mem_gate_low > = global_current_mem_Size,则下次为该模块分配内存的时候,图I所示流程中的第三个判断步骤的判断结果为是,进入到后续流程,分配内存。下次释放内存的时候,会将over_high_gate设为O。需要说明的是,本发明实施例所涉及的应用系统可包括软件方式实现的应用系统,也可包括软硬件结合方式实现的应用系统。本发明实施例既可适用于嵌入式系统,也可适用于非嵌入式系统。当应用于嵌入式系统时,可将内存分配管理前移到为模块分配内存时,而不仅仅跟踪记录内存分配和使用情况;当应用于非嵌入式系统时,可避免复杂的对进程进行调度切换的过程,降低系统开销。综上所述,本发明实施例当系统资源消耗较大,大部分模块申请不到内存的时候,能够保证重要的模块申请到内存,系统重要的功能还能运转。基于相同的技术构思,本申请实施例还提供了一种内存管理系统。参见图3,为本发明实施例提供的内存管理系统的结构示意图,该系统可包括参数设置单元301、内存分配单元302,还可进一步包括内存回收单元303,其中参数设置单元301,用于根据应用系统中的各模块所需内存和重要程度,分别为应用系统中的各模块设置内存分配控制参数;内存分配单元302,用于当接收到模块申请内存的请求时,获取为所述模块设置的内存分配控制参数,并根据获取到的内存分配控制参数以及当前内存的使用情况,对所述模块进行内存分配控制;内存回收单元303用于在模块释放内存时回收模块释放的内存。具体的,参数设置单元301所设置的内存分配控制参数包括内存使用上限。相应的,内存分配单元302在进行内存分配时,比较所述模块的内存使用上限与所述模块当前使用的内存大小,若前者小于后者,则拒绝为所述模块分配内存。进一步的,参数设置单元301在为模块设置内存使用上限时对于内存占用多,但是分配不到内存不会引起应用系统异常的模块,将该模块的内存使用上限设置为高于缺省值;对于分配不到内存就会影响应用系统,而且占用内存多的模块,将该模块的内存使用上限设置为高于缺省值。具体的,参数设置单元301所设置的内存分配控制参数包括该模块的内存使用上限和系统内存高门限。相应的,内存分配单元302在进行内存分配时,比较所述模块的内存使用上限与所述模块当前使用的内存大小,比较所述模块的系统内存高门限与应用系统当前使用的内存大小;若所述模块的内存使用上限小于所述模块当前使用的内存大小,或者所述模块的系统内存高门限小于应用系统当前使用的内存大小,则拒绝为所述模块分配内存。进一步的,参数设置单元301为模块设置系统内存高门限时对于分配不到内存会导致部分功能不可用的模块,将该模块的系统内存高门限设置为低于缺省值;或者,对于内存占用不多但执行重要功能的模块,将该模块的系统内存高门限设置为高于缺省值;或者,对于分配不到内存会影响应用系统运行的模块,将该模块的系统内存高门限设置为高于缺省值。具体的,参数设置单元301所设置的内存分配控制参数还包括系统内存低门限,一个模块的系统内存低门限不大于该模块的系统内存高门限。相应的,内存分配单元301还用于当接收到模块申请内存的请求时,若因所述模块的系统内存使用上限小于应用系统当前使用的内存大小而被拒绝分配内存,则将该模块的内存分配状态标志置位;内存分配单元301在进行内存分配时,若所述模块的系统内存使用上限不小于应用系统当前使用的内存大小,则获取所述模块的内存分配状态标志,并比较所述模块的系统内存低门限与应用系统当前使用的内存大小,若所述内存分配状态标志被置位,并且所述模块的系统内存低门限小于应用系统当前使用的内存大小,则拒绝为所述模块分配内存。进一步的,参数设置单元301为模块设置系统内存低门限时对于分配不到内存会导致部分功能不可用的 模块,将该模块的系统内存低门限设置为低于缺省值;或者,对于内存占用不多但执行重要功能的模块,将该模块的系统内存低门限设置为高于缺省值;或者,对于分配不到内存会影响应用系统运行的模块,将该模块的系统内存低门限设置为高于缺省值。具体的,当模块释放占用的内存时,内存回收单元303比较所述模块的系统内存低门限与应用系统当前使用的内存大小,若前者不小于后者,则取消对所述模块的内存分配状态标志的置位。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
权利要求
1.一种内存管理方法,其特征在于,该方法包括 根据应用系统中的各模块所需内存和重要程度,分别为应用系统中的各模块设置内存分配控制參数; 当接收到模块申请内存的请求时,获取为所述模块设置的内存分配控制參数,并根据获取到的内存分配控制參数以及当前内存的使用情況,对所述模块进行内存分配控制。
2.如权利要求I所述的方法,其特征在于,模块的内存分配控制參数包括内存使用上限; 所述根据获取到的内存分配控制參数以及当前内存的使用情況,对所述模块进行内存分配控制,具体为 比较所述模块的内存使用上限与所述模块当前使用的内存大小,若前者小于后者,则拒绝为所述模块分配内存。
3.如权利要求2所述的方法,其特征在于,为模块设置内存使用上限时 对于内存占用多,但是分配不到内存不会引起应用系统异常的模块,将该模块的内存使用上限设置为高于缺省值; 对于分配不到内存就会影响应用系统,而且占用内存多的模块,将该模块的内存使用上限设置为高于缺省值。
4.如权利要求I所述的方法,其特征在于,模块的内存分配控制參数包括该模块的内存使用上限和系统内存高门限; 所述根据获取到的内存分配控制參数以及当前内存的使用情況,对所述模块进行内存分配控制,包括 比较所述模块的内存使用上限与所述模块当前使用的内存大小,比较所述模块的系统内存高门限与应用系统当前使用的内存大小; 若所述模块的内存使用上限小于所述模块当前使用的内存大小,或者所述模块的系统内存高门限小于应用系统当前使用的内存大小,则拒绝为所述模块分配内存。
5.如权利要求4所述的方法,其特征在于,为模块设置系统内存高门限时 对于分配不到内存会导致部分功能不可用的模块,将该模块的系统内存高门限设置为低于缺省值;或者 对于内存占用不多但执行重要功能的模块,将该模块的系统内存高门限设置为高于缺省值;或者 对于分配不到内存会影响应用系统运行的模块,将该模块的系统内存高门限设置为高于缺省值。
6.如权利要求4所述的方法,其特征在于,模块的内存分配控制參数还包括系统内存低门限,一个模块的系统内存低门限不大于该模块的系统内存高门限;该方法还包括 当接收到模块申请内存的请求时,若因所述模块的系统内存使用上限小于应用系统当前使用的内存大小而被拒绝分配内存,则将该模块的内存分配状态标志置位; 当接收到模块申请内存的请求时,若所述模块的系统内存使用上限不小于应用系统当前使用的内存大小,则获取所述模块的内存分配状态标志,并比较所述模块的系统内存低门限与应用系统当前使用的内存大小,若所述内存分配状态标志被置位,并且所述模块的系统内存低门限小于应用系统当前使用的内存大小,则拒绝为所述模块分配内存。
7.如权利要求6所述的方法,其特征在于,为模块设置系统内存低门限时 对于分配不到内存会导致部分功能不可用的模块,将该模块的系统内存低门限设置为低于缺省值;或者 对于内存占用不多但执行重要功能的模块,将该模块的系统内存低门限设置为高于缺省值;或者 对于分配不到内存会影响应用系统运行的模块,将该模块的系统内存低门限设置为高于缺省值。
8.如权利要求6所述的方法,其特征在于,该方法还包括 当释放模块占用的内存时,比较所述模块的系统内存低门限与应用系统当前使用的内存大小,若前者不小于后者,则取消对所述模块的内存分配状态标志的置位。
9.一种内存管理系统,其特征在于,包括 參数设置単元,用于根据应用系统中的各模块所需内存和重要程度,分别为应用系统中的各模块设置内存分配控制參数; 内存分配単元,用于当接收到模块申请内存的请求时,获取为所述模块设置的内存分配控制參数,井根据获取到的内存分配控制參数以及当前内存的使用情況,对所述模块进行内存分配控制。
10.如权利要求9所述的系统,其特征在于,所述參数设置单元所设置的内存分配控制參数包括内存使用上限; 所述内存分配単元具体用于,比较所述模块的内存使用上限与所述模块当前使用的内存大小,若前者小于后者,则拒绝为所述模块分配内存。
11.如权利要求10所述的系统,其特征在于,所述參数设置单元具体用于,为模块设置内存使用上限吋对于内存占用多,但是分配不到内存不会引起应用系统异常的模块,将该模块的内存使用上限设置为高于缺省值;对于分配不到内存就会影响应用系统,而且占用内存多的模块,将该模块的内存使用上限设置为高于缺省值。
12.如权利要求9所述的系统,其特征在于,所述參数设置单元所设置的内存分配控制參数包括该模块的内存使用上限和系统内存高门限; 所述内存分配単元具体用于,比较所述模块的内存使用上限与所述模块当前使用的内存大小,比较所述模块的系统内存高门限与应用系统当前使用的内存大小;若所述模块的内存使用上限小于所述模块当前使用的内存大小,或者所述模块的系统内存高门限小于应用系统当前使用的内存大小,则拒绝为所述模块分配内存。
13.如权利要求12所述的系统,其特征在于,所述參数设置单元具体用于,为模块设置系统内存高门限时对于分配不到内存会导致部分功能不可用的模块,将该模块的系统内存高门限设置为低于缺省值;或者,对于内存占用不多但执行重要功能的模块,将该模块的系统内存高门限设置为高于缺省值;或者,对于分配不到内存会影响应用系统运行的模块,将该模块的系统内存高门限设置为高于缺省值。
14.如权利要求12所述的系统,其特征在于,所述參数设置单元所设置的内存分配控制參数还包括系统内存低门限,一个模块的系统内存低门限不大于该模块的系统内存高门限; 所述内存分配単元还用于,当接收到模块申请内存的请求时,若因所述模块的系统内存使用上限小于应用系统当前使用的内存大小而被拒绝分配内存,则将该模块的内存分配状态标志置位; 所述内存分配単元具体用于,当接收到模块申请内存的请求时,若所述模块的系统内存使用上限不小于应用系统当前使用的内存大小,则获取所述模块的内存分配状态标志,并比较所述模块的系统内存低门限与应用系统当前使用的内存大小,若所述内存分配状态标志被置位,并且所述模块的系统内存低门限小于应用系统当前使用的内存大小,则拒绝为所述模块分配内存。
15.如权利要求14所述的系统,其特征在于,所述參数设置单元具体用于,为模块设置系统内存低门限时对于分配不到内存会导致部分功能不可用的模块,将该模块的系统内存低门限设置为低于缺省值;或者,对于内存占用不多但执行重要功能的模块,将该模块的系统内存低门限设置为高于缺省值;或者,对于分配不到内存会影响应用系统运行的模块,将该模块的系统内存低门限设置为高于缺省值。
16.如权利要求14所述的系统,其特征在于,还包括 内存回收単元,用于当模块释放占用的内存时,比较所述模块的系统内存低门限与应用系统当前使用的内存大小,若前者不小于后者,则取消对所述模块的内存分配状态标志的置位。
全文摘要
本发明公开了一种内存管理方法及其系统,该方法包括根据应用系统中的各模块所需内存和重要程度,分别为应用系统中的各模块设置内存分配控制参数;当接收到模块申请内存的请求时,根据内存分配控制参数以及当前内存的使用情况,对所述模块进行内存分配控制。采用本发明可实现对应用系统中的各模块进行内存分配控制,避免因为代码错误或者恶意攻击引起内存不足,造成系统崩溃。
文档编号G06F12/02GK102662850SQ20121008975
公开日2012年9月12日 申请日期2012年3月30日 优先权日2012年3月30日
发明者郑上闽 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1