CN1770125A - 一种分配内存的方法 - Google Patents
一种分配内存的方法 Download PDFInfo
- Publication number
- CN1770125A CN1770125A CN 200410087169 CN200410087169A CN1770125A CN 1770125 A CN1770125 A CN 1770125A CN 200410087169 CN200410087169 CN 200410087169 CN 200410087169 A CN200410087169 A CN 200410087169A CN 1770125 A CN1770125 A CN 1770125A
- Authority
- CN
- China
- Prior art keywords
- internal memory
- memory
- application module
- allocation
- number percent
- 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.)
- Pending
Links
Images
Abstract
本发明公开了一种分配内存的方法,该方法至少包括以下步骤:A、判断设置的应用模块使用内存的优先级别,将内存优先分配给使用内存为高优先级的应用模块;B、当内存被分配完以后还有应用模块申请内存,则根据应用模块使用内存的优先级别,强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块。在应用模块申请内存时利用该方法,根据应用模块使用内存的优先级别来分配内存,可以保证一些重要的应用模块在内存资源紧张的情况下能够优先分配到内存,并且还可以保证一些重要的应用模块在内存资源被分配完以后能够顺利分配到内存。
Description
技术领域
本发明涉及内存分配技术领域,特别涉及一种分配内存的方法。
背景技术
现有技术中一般采用片分内存的方法和页面交换机制,实现对系统的内存进行管理和分配。
所谓片分内存的方法,就是把内存空间划分为多个大小不同的内存缓冲池,每个内存缓冲池再被划分为多个大小相同的内存缓冲区;在应用模块申请分配内存时,系统先找到缓冲区大小比所需内存大小稍大,并且缓冲区大小又最接近所需内存大小的内存缓冲池,然后在该内存缓冲池中直接分配一个内存缓冲区给应用模块。
所谓页面交换机制是在一个只有少量物理内存的系统中,操作系统将内存划分成易于处理的页面,在系统运行时将较少使用的页面交换到外接存储设备上去,在真正使用时把外接存储设备上的页面重新交换进内存的机制。页面交换机制允许占用内存比实际内存要大的软件在系统上运行。
由于页面交换机制需要有足够的外接存储设备空间来存储被交换的页面,同时外接存储设备的访问速度不能远远低于物理内存的访问速度。而在实时系统中,一般外接存储设备的访问速度都远远低于物理内存的访问速度,因此采用页面交换机制将引发系统性能的下降,系统的实时性也得不到保证。因此,为提高实时环境中系统的执行效率,在对实时系统的内存进行管理和分配时,都只采用片分内存的方法,而不采用页面交换机制。
但是,不采用页面交换机制又会带来的一个新的问题:因为系统的内存是有限的,在对实时系统的内存进行分配时,由于没有采用页面交换机制,会出现系统内存不够的问题。
当内存都被申请分配完以后,如果还有应用模块必须申请内存,那么为了给应用模块分配内存,系统只好进行复位或者让应用模块等待。系统复位就是释放所有的内存空间,将整个系统恢复到初始状态,这样所带来的后果对系统而言显然是难以接受的;而让应用模块等待就有可能出现系统运行速度不能预期的问题,这对于实时系统而言也将是致命的。
发明内容
有鉴于此,本发明的主要目的在于提供一种分配内存的方法,以解决实时环境中系统内存不够所带来的问题。
为达到上述目的,本发明提供了一种分配内存的方法,其特征在于,该方法至少包括以下步骤:
A、判断设置的应用模块使用内存的优先级别,将内存优先分配给使用内存为高优先级的应用模块;
B、当内存被分配完以后还有应用模块申请内存,则根据应用模块使用内存的优先级别,强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块。
上述方案中,该方法在步骤A之前进一步包括:设置内存使用百分比的阈值,当应用模块向内存管理模块申请内存时,判断内存使用百分比是否达到阈值,如果没有达到阈值,则直接将内存分配给应用模块;如果达到阈值,则执行步骤A。
上述方案中,所述设置的内存百分比阈值被保存在百分比阈值寄存器中;所述的百分比阈值支持掉电存储;所述的百分比阈值寄存器在内存中。
上述方案中,在所述的内存分配给应用模块以后进一步包括:内存管理模块实时记录内存使用百分比;所述的内存使用百分比被保存在百分比实时寄存器中;所述的百分比实时寄存器在内存中。
因此,本发明提供的这种分配内存的方法,通过设置应用模块使用内存的优先级别,在应用模块申请内存时,根据应用模块使用内存的优先级别来分配内存,可以在内存使用百分比达到阈值以后放慢内存分配的速度,防止了系统因内存被迅速分配完而发生崩溃,并且保证一些重要的应用模块在内存资源紧张的情况下能够优先分配到内存;当内存被分配完以后还有应用模块申请内存时,强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块,保证一些重要的应用模块在内存资源被分配完以后也能够顺利分配到内存。
附图说明
图1为本发明一个较佳实施例中分配内存的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例,并参照附图,对本发明进一步详细说明。
本发明提供了一种分配内存的方法,通过设置应用模块使用内存的优先级别,在应用模块申请内存时,根据应用模块使用内存的优先级别来分配内存;当内存资源被分配完以后还有应用模块申请内存时,强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块。
虽然同一个应用模块可以用来处理多个事件,但是应用模块处理的每个事件的重要程度却是不相同的,所以可以根据应用模块所处理每个事件的重要程度来设置应用模块使用内存的优先级别。对于设备故障、系统告警等比较重要的事件,应用模块使用内存的优先级别设置为高优先级;对于一些提示性信息或者事件上报,应用模块使用内存的优先级别设置为低优先级。
另外,在实际应用中还可以设置一个内存使用百分比的阈值,内存使用百分比的阈值是根据系统的实际情况进行设置的,它被保存在内存的百分比阈值寄存器中。内存百分比阈值即使在掉电情况下仍然不会丢失,支持掉电存储。另外,内存百分比阈值可以修改,如根据实际应用情况修改内存百分比阈值的数值。在本发明较佳实施例中,内存使用百分比被记录和保存在内存的百分比实时寄存器中。
如图1所示,图1为本发明一个较佳实施例中分配内存的方法流程图,该方法包括以下步骤:
步骤101~102:应用模块向内存管理模块申请内存,内存管理模块根据百分比阈值寄存器中记录的内存使用百分比,判断内存使用百分比是否达到阈值,如果内存使用百分比没有达到阈值,则执行步骤103;否则,执行步骤104;
步骤103:内存管理模块直接分配内存给应用模块,并执行步骤107;
步骤104:内存管理模块判断应用模块使用内存的优先级别,如果应用模块使用内存的优先级别为高优先级,则执行步骤105;否则,执行步骤109;
步骤105:内存管理模块对内存进行分配,如果此时内存资源还没有被分配完,则直接将内存分配给应用模块,内存分配成功,执行步骤107;如果此时内存资源已经被分配完,则内存分配失败,执行步骤106;
步骤106:内存管理模块强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块;
步骤107:内存中的百分比阈值寄存器记录并保存内存使用的百分比;
步骤108:内存申请成功;
步骤109~110:内存管理模块不分配内存给应用模块,内存申请失败。
在本发明所举的这个较佳实施例中,在对应用模块分配内存时,内存管理模块先判断内存使用百分比,当内存使用百分比达到一定的阈值以后,才根据应用模块使用内存的优先级别,将内存优先分配给使用内存为高优先级的应用模块。在实际应用中,类似的实施方案还可以没有任何困难地直接根据应用模块使用内存的优先级别,先将内存优先分配给使用内存为高优先级的应用模块,再将内存分配给使用内存为低优先级的应用模块,而不再对内存使用百分比进行判断。当内存资源被分配完以后还有应用模块申请内存时,就强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块。
从上面的实施例可以看出,本发明提供的这种分配内存的方法,通过设置应用模块使用内存的优先级别,在应用模块申请内存时,根据应用模块使用内存的优先级别来分配内存,可以在内存使用百分比达到阈值以后放慢内存分配的速度,防止了系统因内存被迅速分配完而发生崩溃,并且保证一些重要的应用模块在内存资源紧张的情况下能够优先分配到内存;当内存被分配完以后还有应用模块申请内存时,强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块,保证一些重要的应用模块在内存资源被分配完以后也能够顺利分配到内存。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1、一种分配内存的方法,其特征在于,该方法至少包括以下步骤:
A、判断设置的应用模块使用内存的优先级别,将内存优先分配给使用内存为高优先级的应用模块;
B、当内存被分配完以后还有应用模块申请内存,则根据应用模块使用内存的优先级别,强制释放低优先级的应用模块占用的内存,并将释放的内存分配给高优先级的应用模块。
2、根据权利要求1所述的方法,其特征在于,该方法在步骤A之前进一步包括:
设置内存使用百分比的阈值,当应用模块向内存管理模块申请内存时,判断内存使用百分比是否达到阈值,如果没有达到阈值,则直接将内存分配给应用模块;如果达到阈值,则执行步骤A。
3、根据权利要求2所述的方法,其特征在于,所述设置的内存百分比阈值被保存在百分比阈值寄存器中。
4、根据权利要求2所述的方法,其特征在于,所述的百分比阈值支持掉电存储。
5、根据权利要求3所述的方法,其特征在于,所述的百分比阈值寄存器在内存中。
6、根据权利要求2所述的方法,其特征在于,在所述的内存分配给应用模块以后进一步包括:内存管理模块实时记录内存使用百分比。
7、根据权利要求6所述的方法,其特征在于,所述的内存使用百分比被保存在百分比实时寄存器中。
8、根据权利要求7所述的方法,其特征在于,所述的百分比实时寄存器在内存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410087169 CN1770125A (zh) | 2004-11-04 | 2004-11-04 | 一种分配内存的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410087169 CN1770125A (zh) | 2004-11-04 | 2004-11-04 | 一种分配内存的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1770125A true CN1770125A (zh) | 2006-05-10 |
Family
ID=36751438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200410087169 Pending CN1770125A (zh) | 2004-11-04 | 2004-11-04 | 一种分配内存的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1770125A (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100444143C (zh) * | 2006-11-28 | 2008-12-17 | 北京中星微电子有限公司 | 一种内存访问仲裁装置和方法 |
CN101908022A (zh) * | 2010-08-13 | 2010-12-08 | 优视科技有限公司 | 一种用于移动通讯设备终端的内存管理方法及其装置 |
WO2011095086A1 (zh) * | 2010-02-04 | 2011-08-11 | 青岛海信移动通信技术股份有限公司 | 一种基于linux系统的设备及其应用启动的方法 |
CN102156675A (zh) * | 2010-02-12 | 2011-08-17 | 中兴通讯股份有限公司 | 一种内存分配方法及装置 |
CN102662850A (zh) * | 2012-03-30 | 2012-09-12 | 杭州华三通信技术有限公司 | 一种内存管理方法及其系统 |
CN103246568A (zh) * | 2013-04-16 | 2013-08-14 | 深圳桑菲消费通信有限公司 | 一种通过手机设置应用优先级的方法和装置 |
CN103927230A (zh) * | 2014-03-25 | 2014-07-16 | 优视科技有限公司 | 一种内存使用状况的反馈方法及装置 |
CN104484282A (zh) * | 2014-12-31 | 2015-04-01 | 广东欧珀移动通信有限公司 | 一种内存回收方法和装置 |
CN105701025A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN105700968A (zh) * | 2016-01-11 | 2016-06-22 | 厦门雅迅网络股份有限公司 | 一种嵌入式系统中内存泄漏诊断处理的方法和装置 |
WO2017000657A1 (zh) * | 2015-06-30 | 2017-01-05 | 深圳市中兴微电子技术有限公司 | 一种缓存管理的方法、装置和计算机存储介质 |
CN106776036A (zh) * | 2016-12-30 | 2017-05-31 | 广东欧珀移动通信有限公司 | 一种资源分配方法及装置 |
CN106776041A (zh) * | 2016-12-30 | 2017-05-31 | 广东欧珀移动通信有限公司 | 一种数据处理方法及装置 |
CN106775471A (zh) * | 2016-12-08 | 2017-05-31 | 深圳创维-Rgb电子有限公司 | 管理本地存储器的方法及装置 |
CN106919520A (zh) * | 2015-12-28 | 2017-07-04 | 龙芯中科技术有限公司 | 访存命令调度方法、装置和系统 |
CN109376002A (zh) * | 2018-08-14 | 2019-02-22 | 广东格兰仕集团有限公司 | 一种基于烤箱控制系统的内存优化控制方法 |
CN109684232A (zh) * | 2018-10-23 | 2019-04-26 | 许继集团有限公司 | 一种嵌入式协议栈内存管理方法 |
CN114385370A (zh) * | 2022-01-18 | 2022-04-22 | 重庆紫光华山智安科技有限公司 | 内存分配方法、系统、设备及介质 |
-
2004
- 2004-11-04 CN CN 200410087169 patent/CN1770125A/zh active Pending
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100444143C (zh) * | 2006-11-28 | 2008-12-17 | 北京中星微电子有限公司 | 一种内存访问仲裁装置和方法 |
WO2011095086A1 (zh) * | 2010-02-04 | 2011-08-11 | 青岛海信移动通信技术股份有限公司 | 一种基于linux系统的设备及其应用启动的方法 |
CN102156675A (zh) * | 2010-02-12 | 2011-08-17 | 中兴通讯股份有限公司 | 一种内存分配方法及装置 |
CN102156675B (zh) * | 2010-02-12 | 2014-03-19 | 中兴通讯股份有限公司 | 一种内存分配方法及装置 |
CN101908022A (zh) * | 2010-08-13 | 2010-12-08 | 优视科技有限公司 | 一种用于移动通讯设备终端的内存管理方法及其装置 |
CN102662850A (zh) * | 2012-03-30 | 2012-09-12 | 杭州华三通信技术有限公司 | 一种内存管理方法及其系统 |
CN102662850B (zh) * | 2012-03-30 | 2015-11-25 | 杭州华三通信技术有限公司 | 一种内存管理方法及其系统 |
CN103246568A (zh) * | 2013-04-16 | 2013-08-14 | 深圳桑菲消费通信有限公司 | 一种通过手机设置应用优先级的方法和装置 |
CN103927230A (zh) * | 2014-03-25 | 2014-07-16 | 优视科技有限公司 | 一种内存使用状况的反馈方法及装置 |
CN103927230B (zh) * | 2014-03-25 | 2017-03-29 | 优视科技有限公司 | 一种内存使用状况的反馈方法及装置 |
CN104484282A (zh) * | 2014-12-31 | 2015-04-01 | 广东欧珀移动通信有限公司 | 一种内存回收方法和装置 |
CN104484282B (zh) * | 2014-12-31 | 2017-07-07 | 广东欧珀移动通信有限公司 | 一种内存回收方法和装置 |
WO2017000657A1 (zh) * | 2015-06-30 | 2017-01-05 | 深圳市中兴微电子技术有限公司 | 一种缓存管理的方法、装置和计算机存储介质 |
CN106330760A (zh) * | 2015-06-30 | 2017-01-11 | 深圳市中兴微电子技术有限公司 | 一种缓存管理的方法和装置 |
CN106919520A (zh) * | 2015-12-28 | 2017-07-04 | 龙芯中科技术有限公司 | 访存命令调度方法、装置和系统 |
CN106919520B (zh) * | 2015-12-28 | 2019-11-05 | 龙芯中科技术有限公司 | 访存命令调度方法、装置和系统 |
CN105701025A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种内存回收方法及装置 |
US11023372B2 (en) | 2015-12-31 | 2021-06-01 | Huawei Technologies Co., Ltd. | Application memory reclaim method and apparatus |
CN105700968A (zh) * | 2016-01-11 | 2016-06-22 | 厦门雅迅网络股份有限公司 | 一种嵌入式系统中内存泄漏诊断处理的方法和装置 |
CN106775471A (zh) * | 2016-12-08 | 2017-05-31 | 深圳创维-Rgb电子有限公司 | 管理本地存储器的方法及装置 |
CN106776041A (zh) * | 2016-12-30 | 2017-05-31 | 广东欧珀移动通信有限公司 | 一种数据处理方法及装置 |
CN106776036A (zh) * | 2016-12-30 | 2017-05-31 | 广东欧珀移动通信有限公司 | 一种资源分配方法及装置 |
CN106776041B (zh) * | 2016-12-30 | 2020-01-14 | Oppo广东移动通信有限公司 | 一种数据处理方法及装置 |
CN109376002A (zh) * | 2018-08-14 | 2019-02-22 | 广东格兰仕集团有限公司 | 一种基于烤箱控制系统的内存优化控制方法 |
CN109684232A (zh) * | 2018-10-23 | 2019-04-26 | 许继集团有限公司 | 一种嵌入式协议栈内存管理方法 |
CN109684232B (zh) * | 2018-10-23 | 2021-09-14 | 许继集团有限公司 | 一种嵌入式协议栈内存管理方法 |
CN114385370A (zh) * | 2022-01-18 | 2022-04-22 | 重庆紫光华山智安科技有限公司 | 内存分配方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1770125A (zh) | 一种分配内存的方法 | |
CN1266590C (zh) | 面向构件基于系统内核的进程池/线程池管理方法 | |
CN1183453C (zh) | 一种内存管理系统及其分配方法 | |
CN101847127B (zh) | 一种内存管理方法及装置 | |
CN1303534C (zh) | 一种内存池管理的方法 | |
US20090006502A1 (en) | Application-Specific Heap Management | |
CN102193814A (zh) | 嵌入式虚拟化内存动态分配方法及系统 | |
CN1826590A (zh) | 高速缓存集成装置、系统和方法 | |
CN101286143B (zh) | 一种管理设备驱动缓存的方法 | |
CN1271524C (zh) | 一种静态内存管理方法 | |
CN1963762A (zh) | 堆栈管理系统及方法 | |
CN1916875A (zh) | 存储器空间管理方法及其相关系统 | |
CN1519720A (zh) | 用于动态分配死逻辑分区资源的装置和方法 | |
CN102203718A (zh) | 内存转储处理方法和装置及内存转储系统 | |
CN107305477A (zh) | 一种flashcache混合存储系统的缓存读写操作方法及系统 | |
CN101034375A (zh) | 计算机存储系统 | |
CN101034369A (zh) | 一种软件抗干扰方法及装置 | |
CN101083532A (zh) | 一种数据加载的实现方法及系统 | |
CN1287290C (zh) | 嵌入式实时操作系统中非缓冲内存动态分配方法 | |
CN1829230A (zh) | 一种智能网络磁盘存储系统及其实现方法 | |
CN106598736A (zh) | 一种内存池的内存块调用方法和释放方法及服务器 | |
CN1740975A (zh) | 解决频繁分配释放同等大小内存的方法 | |
CN1505330A (zh) | 一种内存管理方法 | |
CN1581100A (zh) | 一种用于网络处理器的数据老化方法 | |
CN1773458A (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 | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |