CN102662850A - 一种内存管理方法及其系统 - Google Patents

一种内存管理方法及其系统 Download PDF

Info

Publication number
CN102662850A
CN102662850A CN2012100897569A CN201210089756A CN102662850A CN 102662850 A CN102662850 A CN 102662850A CN 2012100897569 A CN2012100897569 A CN 2012100897569A CN 201210089756 A CN201210089756 A CN 201210089756A CN 102662850 A CN102662850 A CN 102662850A
Authority
CN
China
Prior art keywords
module
memory
internal memory
internal
size
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012100897569A
Other languages
English (en)
Other versions
CN102662850B (zh
Inventor
郑上闽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ziguang Hengyue Technology Co.,Ltd.
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201210089756.9A priority Critical patent/CN102662850B/zh
Publication of CN102662850A publication Critical patent/CN102662850A/zh
Application granted granted Critical
Publication of CN102662850B publication Critical patent/CN102662850B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Abstract

本发明公开了一种内存管理方法及其系统,该方法包括:根据应用系统中的各模块所需内存和重要程度,分别为应用系统中的各模块设置内存分配控制参数;当接收到模块申请内存的请求时,根据内存分配控制参数以及当前内存的使用情况,对所述模块进行内存分配控制。采用本发明可实现对应用系统中的各模块进行内存分配控制,避免因为代码错误或者恶意攻击引起内存不足,造成系统崩溃。

Description

一种内存管理方法及其系统
技术领域
本发明涉及通信领域,尤其涉及一种内存管理方法及其系统。
背景技术
一个软件系统中,内存大部分是动态申请的,即在使用的时候申请内存,使用之后释放内存给系统,以便其他模块使用。在嵌入式系统中,为了保证系统运行效率,系统中运行的所有模块使用相同的内存空间,也就是整个系统的内存统一管理,内存可以被任何一个模块申请使用。这样,一旦某个模块代码的错误出现内存泄漏,或者受到攻击,这个模块可能会将整个系统的内存消耗掉,其它模块申请不到内存,引起整个系统运行异常。
嵌入系统中,所有模块共用系统内存。每个模块申请内存的时候,带上模块的标识。系统将模块的标识记录到系统的内存管理信息部分。可以通过查看系统的内存管理信息,查看哪些模块占用的内存较多,具体占用了多少。
由此可见,目前的内存管理机制,对于内存只记录跟踪情况,只能在出现问题后通过管理信息追查到各模块所占用的内存大小,而没有对模块的内存分配进行控制的机制。
发明内容
本发明实施例提供了一种内存管理方法及其系统,用以实现对应用系统中的各模块进行内存分配控制。
本发明实施例提供的内存管理方法,包括:根据应用系统中的各模块所需内存和重要程度,分别为应用系统中的各模块设置内存分配控制参数;当接收到模块申请内存的请求时,获取为所述模块设置的内存分配控制参数,并根据获取到的内存分配控制参数以及当前内存的使用情况,对所述模块进行内存分配控制。
本发明实施例提供的内存管理系统,包括:参数设置单元,用于根据应用系统中的各模块所需内存和重要程度,分别为应用系统中的各模块设置内存分配控制参数;内存分配单元,用于当接收到模块申请内存的请求时,获取为所述模块设置的内存分配控制参数,并根据获取到的内存分配控制参数以及当前内存的使用情况,对所述模块进行内存分配控制。
本发明实施例的上述实施例通过为应用系统中的各模块设置内存分配控制参数,从而在为模块分配内存时,可根据为该模块设置的内存分配控制参数对该模块的内存分配进行控制,与现有技术相比,实现了对模块的内存分配控制,而不仅仅是记录内存分配结果。
附图说明
图1为本发明实施例提供的内存分配流程示意图;
图2为本发明实施例提供的内存释放流程示意图;
图3为本发明实施例提供的内存管理系统结构示意图。
具体实施方式
本发明实施例为应用系统中的各模块设置内存分配控制参数,使得不会一个模块出现内存泄漏或者受到攻击时,消耗掉整个应用系统的内存,引起整个系统崩溃。
下面结合附图对本发明实施例进行详细描述。
本实施例中,分别为应用系统中的各模块设置内存分配控制参数,内存分配控制参数用于对相应模块的内存分配控制。内存分配控制参数至少包括相应模块的内存使用上限max_mem_size,该参数可以byte(字节)为单位。
一个模块的max_mem_size的取值,可遵循以下原则之一或任意组合:
(1)一个模块的max_mem_size取值要大于该模块极端情况下的内存使用量最大值。
(2)max_mem_size的值可以根据分析来设置,比如某个模块的功能主要是保存数据,每条数据占用内存最大1K byte,系统规格保存10K条数据,再考虑到运行过程中的其他内存使用,这个模块的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值。
基于以上内存分配控制参数进行内存分配控制的操作可由应用系统中的内存管理系统执行。当某个模块(如模块1)需要申请内存时,模块1向内存管理系统请求申请内存;内存管理系统获取为该模块设置的max_mem_size,并将该max_mem_size与模块1当前的内存使用量current_mem_size进行比较,若current_mem_size>max_mem_size,则表明该模块可用的内存已经达到上限,此种情况下内存管理系统拒绝为该模块分配内存,并可进一步给出相应的提示信息,返回分配失败;若current_mem_size≤max_mem_size,内存管理系统为模块1分配内存,进一步的根据为模块1分配的内存大小,更新该模块当前的内存使用量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的取值,可遵循以下原则:根据该模块在系统中的重要程度进行设置,重要程度越高,这个值就越大。具体的,如果某个模块分配不到内存,仅仅是部分功能暂时不可用,这个值可以设的低一些;如果某个模块比较重要但内存占用不多(比如命令行模块),则可提高这个参数值来保证该模块内存分配的高优先级;如果分配不到内存会影响整个系统,而且可能会占用内存较多,则可将这个参数值设置得比缺省值大;如果某个模块分配不到内存会引起整个系统瘫痪,则可不对这个值进行限制。
模块1申请内存时,内存管理系统获取到模块1的current_mem_size和global_mem_gate_high之后,若判断current_mem_size>max_mem_size,或者global_current_mem_size>系统当前内存使用量global_mem_gate_high,则拒绝为模块1分配内存;否则,为模块1分配内存。
通过以上描述可以看出,在根据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的时候,且该模块试图申请过内存,将该变量置位(如将该变量赋值为1)。
一个模块的global_mem_gate_low的取值,可遵循以下原则:根据该模块在系统中的重要程度进行设置,重要程度越高,这个值就越大,而且global_mem_gate_high≥global_mem_gate_low。具体的,如果某个模块分配不到内存,仅仅是部分功能暂时不可用,这个值可以设的低一些;如果某个模块比较重要但内存占用不多(比如命令行模块),则可提高这个参数值来保证该模块内存分配的高优先级;如果分配不到内存会影响整个系统,而且可能会占用内存较多,则可将这个参数值设置得比缺省值大;如果某个模块分配不到内存会引起整个系统瘫痪,则需要不对这个值进行限制。
模块1申请内存时,内存管理系统获取到模块1的current_mem_size、global_mem_gate_high和global_mem_gate_low之后,若判断满足以下条件之一,则拒绝为模块1分配内存:
current_mem_size>max_mem_size;
global_current_mem_size>global_mem_gate_high;
over_high_gat=1且global_current_mem_size>global_mem_gate_low;
若判断满足以下条件,则为模块1分配内存:
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_id
unsigned long current_mem_size;//定义用于记录该模块当前使用的内存大小的变量current_mem_size
unsigned long over_high_gate;//定义用于记录该模块的内存分配状态的变量over_high_gate
unsigned 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都设得比缺省值大。
当某个模块申请内存时,其流程可如图1所示,包括:
步骤101,根据申请内存的模块的module_id(即模块标识),找到系统中记录的为该模块设置的内存分配控制参数。
步骤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=0,则表明对该模块的内存使用上限不做限制。
步骤103,给出相应的提示信息,返回分配失败。
步骤104,读取global_mem_gate_high,并比较global_mem_gate_high和global_current_mem_size;若global_mem_gate_high!=0,而且global_current_mem_size>global_mem_gate_high,则系统已经没有内存给该模块使用,转入步骤105,否则转入步骤106。其中,若global_mem_gate_high=0,则表明对该参数不做限制。
步骤105,设置over_high_gate=1,给出相应的提示信息,返回分配失败。
步骤106,读取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设置为0,为该模块分配内存,将新分配的内存大小计入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设置为0。
由于应用系统使用的环境和要求千变万化,用户可能需要根据实际情况修改内存参数的设置。本发明实施例允许用户根据需要对模块的内存分配控制参数进行修改或重新设置。在对模块的内存分配控制参数进行修护或重新设置的时候,需要保证global_mem_gate_low<=global_mem_gate_high。
下面分别分析一下修改max_mem_size、global_mem_gate_high和global_mem_gate_low三种参数的过程和影响。
(1)修改max_mem_size
修改max_mem_size后,若max_mem_size<current_mem_size,则下次为该模块分配内存的时候,图1所示流程中的第一个判断步骤的判断结果为否,直接返回分配失败。
修改后max_mem_size,若max_mem_size>=current_mem_size,则下次为该模块分配内存的时候,图1所示流程中的第一个判断步骤的判断结果为是,进入到后续流程。
释放内存的时候,max_mem_size不影响流程。
(2)修改global_mem_gate_high
修改global_mem_gate_high后,若global_mem_gate_high<global_current_mem_size,则下次为该模块分配内存的时候,图1所示流程中的第二个判断步骤的判断结果为否,会设置over_high_gate,并返回分配失败。
修改global_mem_gate_high后,若global_mem_gate_high>=global_current_mem_size,则下次为该模块分配内存的时候,图1所示流程中的第二个判断步骤的判断结果为是,会进入到后续流程。
释放内存的时候,global_mem_gate_high不影响流程。
(3)修改global_mem_gate_low
修改global_mem_gate_low后,若over_high_gate=0,则下次为该模块分配内存的时候,图1所示流程中的第三个判断步骤的判断结果为是,进入后续流程,分配内存。
修改global_mem_gate_low后,若global_mem_gate_low<global_current_mem_size,此时如果over_high_gate=1,则下次为该模块分配内存的时候,图1所示流程中的第三个判断步骤的判断结果为否,返回分配失败。
修改global_mem_gate_low后,若global_mem_gate_low>=global_current_mem_size,则下次为该模块分配内存的时候,图1所示流程中的第三个判断步骤的判断结果为是,进入到后续流程,分配内存。
下次释放内存的时候,会将over_high_gate设为0。
需要说明的是,本发明实施例所涉及的应用系统可包括软件方式实现的应用系统,也可包括软硬件结合方式实现的应用系统。
本发明实施例既可适用于嵌入式系统,也可适用于非嵌入式系统。当应用于嵌入式系统时,可将内存分配管理前移到为模块分配内存时,而不仅仅跟踪记录内存分配和使用情况;当应用于非嵌入式系统时,可避免复杂的对进程进行调度切换的过程,降低系统开销。
综上所述,本发明实施例当系统资源消耗较大,大部分模块申请不到内存的时候,能够保证重要的模块申请到内存,系统重要的功能还能运转。
基于相同的技术构思,本申请实施例还提供了一种内存管理系统。
参见图3,为本发明实施例提供的内存管理系统的结构示意图,该系统可包括参数设置单元301、内存分配单元302,还可进一步包括内存回收单元303,其中:参数设置单元301,用于根据应用系统中的各模块所需内存和重要程度,分别为应用系统中的各模块设置内存分配控制参数;内存分配单元302,用于当接收到模块申请内存的请求时,获取为所述模块设置的内存分配控制参数,并根据获取到的内存分配控制参数以及当前内存的使用情况,对所述模块进行内存分配控制;内存回收单元303用于在模块释放内存时回收模块释放的内存。
具体的,参数设置单元301所设置的内存分配控制参数包括内存使用上限。相应的,内存分配单元302在进行内存分配时,比较所述模块的内存使用上限与所述模块当前使用的内存大小,若前者小于后者,则拒绝为所述模块分配内存。进一步的,参数设置单元301在为模块设置内存使用上限时:对于内存占用多,但是分配不到内存不会引起应用系统异常的模块,将该模块的内存使用上限设置为高于缺省值;对于分配不到内存就会影响应用系统,而且占用内存多的模块,将该模块的内存使用上限设置为高于缺省值。
具体的,参数设置单元301所设置的内存分配控制参数包括该模块的内存使用上限和系统内存高门限。相应的,内存分配单元302在进行内存分配时,比较所述模块的内存使用上限与所述模块当前使用的内存大小,比较所述模块的系统内存高门限与应用系统当前使用的内存大小;若所述模块的内存使用上限小于所述模块当前使用的内存大小,或者所述模块的系统内存高门限小于应用系统当前使用的内存大小,则拒绝为所述模块分配内存。进一步的,参数设置单元301为模块设置系统内存高门限时:对于分配不到内存会导致部分功能不可用的模块,将该模块的系统内存高门限设置为低于缺省值;或者,对于内存占用不多但执行重要功能的模块,将该模块的系统内存高门限设置为高于缺省值;或者,对于分配不到内存会影响应用系统运行的模块,将该模块的系统内存高门限设置为高于缺省值。
具体的,参数设置单元301所设置的内存分配控制参数还包括系统内存低门限,一个模块的系统内存低门限不大于该模块的系统内存高门限。相应的,内存分配单元301还用于:当接收到模块申请内存的请求时,若因所述模块的系统内存使用上限小于应用系统当前使用的内存大小而被拒绝分配内存,则将该模块的内存分配状态标志置位;内存分配单元301在进行内存分配时,若所述模块的系统内存使用上限不小于应用系统当前使用的内存大小,则获取所述模块的内存分配状态标志,并比较所述模块的系统内存低门限与应用系统当前使用的内存大小,若所述内存分配状态标志被置位,并且所述模块的系统内存低门限小于应用系统当前使用的内存大小,则拒绝为所述模块分配内存。进一步的,参数设置单元301为模块设置系统内存低门限时:对于分配不到内存会导致部分功能不可用的模块,将该模块的系统内存低门限设置为低于缺省值;或者,对于内存占用不多但执行重要功能的模块,将该模块的系统内存低门限设置为高于缺省值;或者,对于分配不到内存会影响应用系统运行的模块,将该模块的系统内存低门限设置为高于缺省值。
具体的,当模块释放占用的内存时,内存回收单元303比较所述模块的系统内存低门限与应用系统当前使用的内存大小,若前者不小于后者,则取消对所述模块的内存分配状态标志的置位。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

Claims (16)

1.一种内存管理方法,其特征在于,该方法包括:
根据应用系统中的各模块所需内存和重要程度,分别为应用系统中的各模块设置内存分配控制参数;
当接收到模块申请内存的请求时,获取为所述模块设置的内存分配控制参数,并根据获取到的内存分配控制参数以及当前内存的使用情况,对所述模块进行内存分配控制。
2.如权利要求1所述的方法,其特征在于,模块的内存分配控制参数包括内存使用上限;
所述根据获取到的内存分配控制参数以及当前内存的使用情况,对所述模块进行内存分配控制,具体为:
比较所述模块的内存使用上限与所述模块当前使用的内存大小,若前者小于后者,则拒绝为所述模块分配内存。
3.如权利要求2所述的方法,其特征在于,为模块设置内存使用上限时:
对于内存占用多,但是分配不到内存不会引起应用系统异常的模块,将该模块的内存使用上限设置为高于缺省值;
对于分配不到内存就会影响应用系统,而且占用内存多的模块,将该模块的内存使用上限设置为高于缺省值。
4.如权利要求1所述的方法,其特征在于,模块的内存分配控制参数包括该模块的内存使用上限和系统内存高门限;
所述根据获取到的内存分配控制参数以及当前内存的使用情况,对所述模块进行内存分配控制,包括:
比较所述模块的内存使用上限与所述模块当前使用的内存大小,比较所述模块的系统内存高门限与应用系统当前使用的内存大小;
若所述模块的内存使用上限小于所述模块当前使用的内存大小,或者所述模块的系统内存高门限小于应用系统当前使用的内存大小,则拒绝为所述模块分配内存。
5.如权利要求4所述的方法,其特征在于,为模块设置系统内存高门限时:
对于分配不到内存会导致部分功能不可用的模块,将该模块的系统内存高门限设置为低于缺省值;或者
对于内存占用不多但执行重要功能的模块,将该模块的系统内存高门限设置为高于缺省值;或者
对于分配不到内存会影响应用系统运行的模块,将该模块的系统内存高门限设置为高于缺省值。
6.如权利要求4所述的方法,其特征在于,模块的内存分配控制参数还包括系统内存低门限,一个模块的系统内存低门限不大于该模块的系统内存高门限;该方法还包括:
当接收到模块申请内存的请求时,若因所述模块的系统内存使用上限小于应用系统当前使用的内存大小而被拒绝分配内存,则将该模块的内存分配状态标志置位;
当接收到模块申请内存的请求时,若所述模块的系统内存使用上限不小于应用系统当前使用的内存大小,则获取所述模块的内存分配状态标志,并比较所述模块的系统内存低门限与应用系统当前使用的内存大小,若所述内存分配状态标志被置位,并且所述模块的系统内存低门限小于应用系统当前使用的内存大小,则拒绝为所述模块分配内存。
7.如权利要求6所述的方法,其特征在于,为模块设置系统内存低门限时:
对于分配不到内存会导致部分功能不可用的模块,将该模块的系统内存低门限设置为低于缺省值;或者
对于内存占用不多但执行重要功能的模块,将该模块的系统内存低门限设置为高于缺省值;或者
对于分配不到内存会影响应用系统运行的模块,将该模块的系统内存低门限设置为高于缺省值。
8.如权利要求6所述的方法,其特征在于,该方法还包括:
当释放模块占用的内存时,比较所述模块的系统内存低门限与应用系统当前使用的内存大小,若前者不小于后者,则取消对所述模块的内存分配状态标志的置位。
9.一种内存管理系统,其特征在于,包括:
参数设置单元,用于根据应用系统中的各模块所需内存和重要程度,分别为应用系统中的各模块设置内存分配控制参数;
内存分配单元,用于当接收到模块申请内存的请求时,获取为所述模块设置的内存分配控制参数,并根据获取到的内存分配控制参数以及当前内存的使用情况,对所述模块进行内存分配控制。
10.如权利要求9所述的系统,其特征在于,所述参数设置单元所设置的内存分配控制参数包括内存使用上限;
所述内存分配单元具体用于,比较所述模块的内存使用上限与所述模块当前使用的内存大小,若前者小于后者,则拒绝为所述模块分配内存。
11.如权利要求10所述的系统,其特征在于,所述参数设置单元具体用于,为模块设置内存使用上限时:对于内存占用多,但是分配不到内存不会引起应用系统异常的模块,将该模块的内存使用上限设置为高于缺省值;对于分配不到内存就会影响应用系统,而且占用内存多的模块,将该模块的内存使用上限设置为高于缺省值。
12.如权利要求9所述的系统,其特征在于,所述参数设置单元所设置的内存分配控制参数包括该模块的内存使用上限和系统内存高门限;
所述内存分配单元具体用于,比较所述模块的内存使用上限与所述模块当前使用的内存大小,比较所述模块的系统内存高门限与应用系统当前使用的内存大小;若所述模块的内存使用上限小于所述模块当前使用的内存大小,或者所述模块的系统内存高门限小于应用系统当前使用的内存大小,则拒绝为所述模块分配内存。
13.如权利要求12所述的系统,其特征在于,所述参数设置单元具体用于,为模块设置系统内存高门限时:对于分配不到内存会导致部分功能不可用的模块,将该模块的系统内存高门限设置为低于缺省值;或者,对于内存占用不多但执行重要功能的模块,将该模块的系统内存高门限设置为高于缺省值;或者,对于分配不到内存会影响应用系统运行的模块,将该模块的系统内存高门限设置为高于缺省值。
14.如权利要求12所述的系统,其特征在于,所述参数设置单元所设置的内存分配控制参数还包括系统内存低门限,一个模块的系统内存低门限不大于该模块的系统内存高门限;
所述内存分配单元还用于,当接收到模块申请内存的请求时,若因所述模块的系统内存使用上限小于应用系统当前使用的内存大小而被拒绝分配内存,则将该模块的内存分配状态标志置位;
所述内存分配单元具体用于,当接收到模块申请内存的请求时,若所述模块的系统内存使用上限不小于应用系统当前使用的内存大小,则获取所述模块的内存分配状态标志,并比较所述模块的系统内存低门限与应用系统当前使用的内存大小,若所述内存分配状态标志被置位,并且所述模块的系统内存低门限小于应用系统当前使用的内存大小,则拒绝为所述模块分配内存。
15.如权利要求14所述的系统,其特征在于,所述参数设置单元具体用于,为模块设置系统内存低门限时:对于分配不到内存会导致部分功能不可用的模块,将该模块的系统内存低门限设置为低于缺省值;或者,对于内存占用不多但执行重要功能的模块,将该模块的系统内存低门限设置为高于缺省值;或者,对于分配不到内存会影响应用系统运行的模块,将该模块的系统内存低门限设置为高于缺省值。
16.如权利要求14所述的系统,其特征在于,还包括:
内存回收单元,用于当模块释放占用的内存时,比较所述模块的系统内存低门限与应用系统当前使用的内存大小,若前者不小于后者,则取消对所述模块的内存分配状态标志的置位。
CN201210089756.9A 2012-03-30 2012-03-30 一种内存管理方法及其系统 Active CN102662850B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210089756.9A CN102662850B (zh) 2012-03-30 2012-03-30 一种内存管理方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210089756.9A CN102662850B (zh) 2012-03-30 2012-03-30 一种内存管理方法及其系统

Publications (2)

Publication Number Publication Date
CN102662850A true CN102662850A (zh) 2012-09-12
CN102662850B CN102662850B (zh) 2015-11-25

Family

ID=46772347

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210089756.9A Active CN102662850B (zh) 2012-03-30 2012-03-30 一种内存管理方法及其系统

Country Status (1)

Country Link
CN (1) CN102662850B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049376A (zh) * 2012-12-10 2013-04-17 北京小米科技有限责任公司 一种进程的内存溢出测试方法、装置及设备
CN103345447A (zh) * 2013-06-21 2013-10-09 大唐移动通信设备有限公司 内存管理方法及系统
CN105094991A (zh) * 2015-08-21 2015-11-25 北京经纬恒润科技有限公司 一种堆栈容量的设置方法及系统
CN105808440A (zh) * 2016-03-14 2016-07-27 腾讯科技(深圳)有限公司 应用程序的低内存测试方法、装置和系统
CN106326137A (zh) * 2015-07-02 2017-01-11 腾讯科技(深圳)有限公司 一种内存优化方法、装置及用户设备
CN106528551A (zh) * 2015-09-09 2017-03-22 北京国双科技有限公司 申请内存的方法和装置
CN106933670A (zh) * 2015-12-29 2017-07-07 航天信息股份有限公司 一种动态管理应用程序内存的方法
CN107291619A (zh) * 2017-06-21 2017-10-24 北京奇虎科技有限公司 内存占用分析方法及装置
CN108132841A (zh) * 2017-12-11 2018-06-08 杭州迪普科技股份有限公司 一种基于Linux系统的设备的内存分配方法及装置
CN109634740A (zh) * 2018-11-08 2019-04-16 华为技术有限公司 内存管理方法和装置
WO2021093365A1 (zh) * 2019-11-15 2021-05-20 山东英信计算机技术有限公司 一种gpu显存管理控制方法及相关装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1770125A (zh) * 2004-11-04 2006-05-10 华为技术有限公司 一种分配内存的方法
CN101221536A (zh) * 2008-01-25 2008-07-16 中兴通讯股份有限公司 嵌入式系统的内存管理方法及装置
US20090172270A1 (en) * 2007-12-31 2009-07-02 Jim Kardach Device, system, and method of memory allocation
US20110145536A1 (en) * 2009-12-11 2011-06-16 Guenter Zachmann Memory leak detection during dynamic memory allocation
CN102262597A (zh) * 2011-08-05 2011-11-30 浪潮(北京)电子信息产业有限公司 内存池管理方法和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1770125A (zh) * 2004-11-04 2006-05-10 华为技术有限公司 一种分配内存的方法
US20090172270A1 (en) * 2007-12-31 2009-07-02 Jim Kardach Device, system, and method of memory allocation
CN101221536A (zh) * 2008-01-25 2008-07-16 中兴通讯股份有限公司 嵌入式系统的内存管理方法及装置
US20110145536A1 (en) * 2009-12-11 2011-06-16 Guenter Zachmann Memory leak detection during dynamic memory allocation
CN102262597A (zh) * 2011-08-05 2011-11-30 浪潮(北京)电子信息产业有限公司 内存池管理方法和系统

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049376B (zh) * 2012-12-10 2015-08-19 小米科技有限责任公司 一种进程的内存溢出测试方法、装置及设备
CN103049376A (zh) * 2012-12-10 2013-04-17 北京小米科技有限责任公司 一种进程的内存溢出测试方法、装置及设备
CN103345447B (zh) * 2013-06-21 2016-06-08 大唐移动通信设备有限公司 内存管理方法及系统
CN103345447A (zh) * 2013-06-21 2013-10-09 大唐移动通信设备有限公司 内存管理方法及系统
CN106326137B (zh) * 2015-07-02 2020-09-22 腾讯科技(深圳)有限公司 一种内存优化方法、装置及用户设备
CN106326137A (zh) * 2015-07-02 2017-01-11 腾讯科技(深圳)有限公司 一种内存优化方法、装置及用户设备
CN105094991A (zh) * 2015-08-21 2015-11-25 北京经纬恒润科技有限公司 一种堆栈容量的设置方法及系统
CN106528551A (zh) * 2015-09-09 2017-03-22 北京国双科技有限公司 申请内存的方法和装置
CN106933670A (zh) * 2015-12-29 2017-07-07 航天信息股份有限公司 一种动态管理应用程序内存的方法
CN106933670B (zh) * 2015-12-29 2022-01-25 航天信息股份有限公司 一种动态管理应用程序内存的方法
CN105808440A (zh) * 2016-03-14 2016-07-27 腾讯科技(深圳)有限公司 应用程序的低内存测试方法、装置和系统
CN107291619A (zh) * 2017-06-21 2017-10-24 北京奇虎科技有限公司 内存占用分析方法及装置
CN107291619B (zh) * 2017-06-21 2021-04-02 北京奇虎科技有限公司 内存占用分析方法及装置
CN108132841A (zh) * 2017-12-11 2018-06-08 杭州迪普科技股份有限公司 一种基于Linux系统的设备的内存分配方法及装置
CN109634740A (zh) * 2018-11-08 2019-04-16 华为技术有限公司 内存管理方法和装置
WO2021093365A1 (zh) * 2019-11-15 2021-05-20 山东英信计算机技术有限公司 一种gpu显存管理控制方法及相关装置

Also Published As

Publication number Publication date
CN102662850B (zh) 2015-11-25

Similar Documents

Publication Publication Date Title
CN102662850A (zh) 一种内存管理方法及其系统
CN115277566B (zh) 数据访问的负载均衡方法、装置、计算机设备及介质
US11003367B2 (en) Data storage, reading, and cleansing method and device, and cloud storage system
CN102650931A (zh) 一种写入数据的方法及系统
CN105159736A (zh) 一种支持性能分析的SaaS软件部署方案的构建方法
US20090106844A1 (en) System and method for vulnerability assessment of network based on business model
CN111338779B (zh) 资源分配方法、装置、计算机设备和存储介质
CN102413186A (zh) 基于私有云计算的资源调度方法、装置和云管理服务器
CN110222535A (zh) 区块链配置文件的处理装置、方法及存储介质
CN112256433B (zh) 基于Kafka集群的分区迁移方法和装置
CN110162396A (zh) 内存回收方法、装置、系统和存储介质
CN103248622B (zh) 一种自动伸缩的在线视频服务质量保障方法及系统
CN101827120A (zh) 一种集群存储方法及系统
CN115794423A (zh) 一种智能机房的管理方法、装置、电子设备及存储介质
CN102904942A (zh) 服务资源控制系统和服务资源控制方法
CN104571930A (zh) 一种安全域存储空间的管理方法、系统和多应用开放平台装置
CN103095833B (zh) 云服务系统更新方法和装置
CN117499490A (zh) 基于多集群的网络调度方法及装置
CN105512091A (zh) 一种内存分配方法及装置
CN116886626A (zh) 一种业务数据限流方法、装置、计算机设备及存储介质
CN115168012A (zh) 一种线程池并发线程数确定方法及相关产品
CN114003374B (zh) 基于云平台的节点调度方法、装置及电子设备和存储介质
CN103617125A (zh) 内存空间的管理方法和装置
CN103139099A (zh) 自适应的带宽调节方法及装置
CN113190347A (zh) 一种边缘云系统及任务管理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220207

Address after: 100082 room 402, building 2, yard 1, Zhongguancun East Road, Haidian District, Beijing

Patentee after: Ziguang Hengyue Technology Co.,Ltd.

Address before: 310052 Changhe Road, Binjiang District, Hangzhou, Zhejiang Province, No. 466

Patentee before: NEW H3C TECHNOLOGIES Co.,Ltd.