CN104090848A - 一种周期性大数据处理的内存管理方法及装置 - Google Patents
一种周期性大数据处理的内存管理方法及装置 Download PDFInfo
- Publication number
- CN104090848A CN104090848A CN201410338967.0A CN201410338967A CN104090848A CN 104090848 A CN104090848 A CN 104090848A CN 201410338967 A CN201410338967 A CN 201410338967A CN 104090848 A CN104090848 A CN 104090848A
- Authority
- CN
- China
- Prior art keywords
- memory
- static
- allocation
- static memory
- data processing
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 328
- 238000012545 processing Methods 0.000 title claims abstract description 39
- 238000007726 management method Methods 0.000 title abstract description 32
- 230000000737 periodic effect Effects 0.000 title abstract 2
- 230000003068 static effect Effects 0.000 claims abstract description 87
- 238000000034 method Methods 0.000 claims description 51
- 238000003860 storage Methods 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 27
- 238000009826 distribution Methods 0.000 claims description 25
- 230000000630 rising effect Effects 0.000 claims description 15
- 238000006062 fragmentation reaction Methods 0.000 claims description 11
- 238000005201 scrubbing Methods 0.000 claims description 11
- 238000013467 fragmentation Methods 0.000 claims description 10
- 230000007704 transition Effects 0.000 claims description 6
- 238000007599 discharging Methods 0.000 claims description 5
- 238000012544 monitoring process Methods 0.000 claims description 4
- 238000013459 approach Methods 0.000 claims description 2
- 239000012141 concentrate Substances 0.000 claims description 2
- 230000007423 decrease Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 239000012634 fragment Substances 0.000 description 4
- 230000007774 longterm Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000007812 deficiency Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000002591 computed tomography Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种周期性大数据处理的内存管理方法及装置,属计算机内存管理技术领域。其中内存分配管理包括正序分配、逆序分配以及静态内存管理与动态分配相结合,内存整理是将所管理的静态内存保持前段完全连续可用,未释放的数据逆序连续存放于末段。每个数据处理周期都保持完整、连续可用的大内存段。使用本发明装置的周期性操作的大数据处理软件系统,不会出现因为运行时间长而由于内存管理方面的原因,导致性能下降、稳定性下降的情况。本发明内存分配还考虑了大数据处理中内存需求很大的问题,以静态高性能的内存完全、有效使用为主,同时支持操作系统动态内存分配、虚拟内存应用等能力,保证最大化内存需求供给。
Description
技术领域
本发明涉及计算机内存管理技术领域,尤其涉及周期性大数据处理的内存分配、整理、释放的方法及装置。
背景技术
计算机内存管理经过了数十年发展,有很多优秀的算法,包括BUDDY算法及其改进的slab算法等。随着计算机软件、硬件技术的不断发展,内存容量越来越大,操作系统对内存的管理能力也在不断加强;算法不断完善,应用软件越来越多地依赖操作系统的内存管理。
我们在长期实践中发现,操作系统(WINDOWS、UNIX)在快速交替分配大内存块、小内存块,然后交替释放,这样的过程中再多的内存资源也很快会被消耗完,导致内存分配失败,其根本原因是由内存碎片没得到及时整理所致。早期我们开发大数据处理应用系统中,系统运行时间越长,速度越慢,出故障的频率越高。
在一些大数据分析处理的应用环境下,例如超高分辨率(20000×20000)的图像分析处理、大批量的小图像处理(512×512,数千帧甚至上万帧),频繁的语音、视频播放等,由于内存管理问题导致软件系统不稳定的情况很常见。
页面(PAGE)是内存分配的基本单位,按传统的内存分配算法,当应用系统申请分配内存时总是找到一块最合适的内存块(Page Block)给申请者。比如按BUDDY算法,若应用需求分配10个页面,BUDDY算法找到大小为16个Page(2的4次幂)的内存块,分配给申请者;如果前面正好有10个页面的可用内存也会被跳过,分配后这个16页面的内存块(block)产生了一个6页面的小块(block),在随后的内存分配中一般要拆分为4页面和2页面的两个块(block)。这样就导致一次内存分配前后都产生内存碎片。在大数据、大内存块(page block)的分配中这个问题尤其突出。
内存分配算法从大分类上还有最坏适应算法、最佳适应算法、最大匹配内存分配算法等。每一个算法都有各自的优点和缺点,主要表现在分配和释放的复杂度、分配数度、产生碎片多少等方面。
大量的内存分配和释放后不可避免地产生大量的内存碎片,新的分配效率和成功率会越来越低。对此问题,一种解决办法是尝试申请大内存块(pageblock),然后按原申请的大小释放,由操作系统结合虚拟内存管理机制,分配出整块连续的物理内存,供应用程序再次分配。这一方法的不足之处在于可靠性不高,效率较低,会影响其它应用系统的运行性能。
大数据(这里指占用空间大)频繁分配内存和释放内存过程中,通常也伴随着操作系统内存管理中内存数据频繁移动,从而导致效率下降,也就是常见的系统运行越来越慢。
发明内容
本发明的目的在于为周期性操作的大数据处理软件系统提供一种内存管理方法及装置,以保证系统的最大化内存需求供给,达到运行时间长也不会由于内存管理方面的原因导致系统稳定性和运行效率下降的效果。
本发明周期性大数据处理的内存管理方法,其特征在于其中内存分配管理包括正序分配、逆序分配以及静态内存管理与动态分配相结合,内存整理是将所管理的静态内存保持前段完全连续可用,未释放的数据逆序连续存放于末段。
进一步地说,本发明方法按以下步骤:
M0:初始化阶段——根据应用程序所处理的数据的特点、计算机内存配置的容量大小、以及历史分配情况以及当前计算机可分配内存条件来确定预分配静态内存额,向操作系统申请分配一块较大的内存,该内存称为静态内存,然后建立内存分配记录表并初始化,初始化正向静态内存分配指针S103、正向分配当前位置指针S105、逆序分配指针S104、逆序分配当前位置指针S106;
M1:内存分配管理——应用系统内存需求上升期,在静态内存区中从S103顺序无空隙地向后分配,顺序分配指针S105向后移;静态内存不足以满足分配需求时,按应用系统实际申请分配的内存大小向操作系统申请动态内存,并记入内存分配记录表,经过一个大数据处理操作周期后,进入静态内存碎片整理期,残留内存数据移动整理时,需再分配静态内存空间,这个阶段的分配进入逆序分配,就是由S104开始分配,最终把所有静态内存中未释放的数据都移动到S104开始到S106的一段连续无空隙的静态内存区。这样对于每个操作周期,内存状态如同刚开始运行一样,不因长期运行后大量内存碎片问题、以及虚拟内存数据移动问题而影响效率与稳定性。
M2:动态碎片整理——一个大数据处理周期结束后进入碎片整理期,以备下一周期有连续的静态内存空间可供使用,残留内存数据向静态内存区末端移动;结合M1内存分配方法,对静态内存中未释放的内存进行逆序内存再分配并移动数据;通过内存分配记录表,判断残留数据量大小,如果残留数据大于静态内存总量的1/3时,在动态碎片整理完成后,向操作系统重新申请过渡内存区,将静态内存区末端存放数据的区域移动到过渡内存区以存放残留数据;
M3:内存释放——根据内存记录表处理内存释放操作,在静态内存区的释放操作,仅需修改使用状态标志;由操作系统动态分配的内存,修改标志并通知操作系统释放相应的内存。
静态内存通常为100M-2G。
M1内存需求上升期标志为:两次分配间隔不超过1秒的连续内存分配量达上次最大分配量的1/5,并且还在继续分配作为标志,静态内存碎片整理期以上升期结束10秒后,5秒以内连续释放总内存分配量的2/3为标志。具体应用时,根据多次应用的具体统计数据调整上述参数,应用程序也可以以通知的方式告知内存管理的各个时期。
其中,M1正序分配和逆序分配共用一块连续的静态内存区,静态内存用完或超过时,S105指针等于或接近S106。
其中,M1分配内存时,如果需求内存量RequiredMemory+S105>S106时,向操作系统申请相应的内存。
本发明提供的内存分配方法,是把正序分配、逆序分配以及静态内存管理与动态分配相结合,解决的实际问题是周期性操作的大数据处理中的不断产生内存碎片导致系统性能下降、系统故障的问题。
本发明提供的内存整理方法,是将所管理的静态内存保持前段完全连续可用,未释放的数据逆序连续存放于末段;解决的实际问题是周期性操作的大数据处理中的每个操作周期的始终有连续足够的内存空间可以使用,保证系统长时间操作的性能和稳定性。
与上述方法和步骤相对应,本发明提供一种内存管理装置,包括包括初始化管理模块、内存分配管理模块、内存整理模块、操作过程监测模块、装置释放模块。
其中初始化模块根据应用需求、计算机内存配置、以及历史分配情况、当前计算机可分配内存条件确定预分配静态内存额,向操作系统申请分配;完成记录数据初始化;
内存分配管理模块,在内存需求上升期在静态内存区中顺序无空隙地向后分配;内存碎片整理期残留内存移动再分配时在静态内存空间由后向前分配;静态内存不足以满足分配需求时向操作系统申请动态内存,并统一管理;
内存整理模块,主要包括一个动态内存碎片整理程序,在一个大数据处理周期结果后进入碎片整理,以备下一周期有连续的静态内存空间可供使用;残留内存数据向静态内存区末端移动,如果残留数据过大则向操作系统重新申请过渡内存区来存放残留数据。
操作过程监测模块,用于动态判断内存整理模块运行启动的时机,即判断内存分配处理需求上升期、内存集中释放期的开始与结束时机,启动对应的内存分配方案以及内存整理模块中的动态内存碎片整理程序,并对由于判断不准确引起的小问题进行修正;
装置释放模块,释放所有由操作系统分配的动态内存,依次释放静态再分配内存,最后释放预分配的静态内存。
本发明方法和装置针对周期性操作的大数据处理应用特点,能够在很好地控制内存的分配、动态碎片整理,在系统关键运行期间避免产生内存碎片,从而提高稳定性和运行效率。特别地,逆序分配内存并移动内存碎片数据保证了每个操作周期有充足、连续的内存可以分配使用。
本发明的有益效果:将系统内存中必要的部分作为静态内存进行符合周期性操作的大数据处理软件特点的管理方法,并且每个数据处理周期都保持完整、连续可用的大内存段。使用本发明装置的周期性操作的大数据处理软件系统,不会出现因为运行时间长而由于内存管理方面的原因,导致性能下降、稳定性下降的情况。本发明内存分配方法还考虑了大数据处理中内存需求很大的问题,以静态高性能的内存完全、有效使用为主,同时支持操作系统动态内存分配、虚拟内存应用等能力,保证最大化内存需求供给。
附图说明
图1为本发明基本工作流程图。
图2本发明实施例实施例内存管理基本结构图。
图3本发明实施例内存分配记录表结构示意图。
图4本发明实施例内存分配流程图。
图5本发明实施例碎片动态整理流程图。
图6本发明实施例碎片动态整理后的效果图以及每个操作周期初始内存状态图。
图7本发明实施例应用结构示意图。
具体实施方式
本发明内存管理工作流程如图1。
步骤S10:向操作系统申请分配一块容量为Capacity_StaticMemory的内存,该内存称为静态内存。然后建立内存分配记录表并初始化,初始化正向静态内存分配指针S103、正向分配当前位置指针S105、逆序分配指针S104、逆序分配当前位置指针S106。
Capacity_StaticMemory数值的确定方法如下:
基数CapacityBase=计算机系统可用内存(AvailableMemory)/2,如果计算机系统同时运行多个大型应用软件,修正:CapacityBase=AvailableMemory/3。
Capacity_StaticMemory=CapacityBase×(0.5+RevisionCo_Requiring/10)×(1+RevisionCo_Statistics);
其中RevisionCo_Requiring为应用需求修正系数,由应用程序配置,取值范围为1-10;RevisionCo_Statistics为历史分配修正系统:
RevisionCo_Statitics=Capacity_Excess/Capacity_StaticMemory;
其中Capacity_Excess为每个操作周期动态分配内存的平均值,从上一次修改Capacity_StaticMemory值以后的计数平均值。
Capacity_StaticMemory最终值不能大于AvailableMemory×2/3。
进一步创建内存管理结构,这是连续的大块静态内存,包括四个部分,如图2所示,分别是(A)顺序已分配静态内存区从S103开始到S105-1、(B)顺序可分配静态内存区S105开始到S106-1、(C)逆序已分配内存区S104开始到S106-1、(D)内存分配记录表,从S104开始到静态内存块末尾。本发明中内存分配记录表同样采用静态内存顺序排列的方式,而不用链表结构。原因也是因为链表结构动态内存分配和释放过多,从而影响应用性能。静态内存分配表有一个问题是需要预留足够大的长度,保证内存分配项目不会超过这个长度。本发明预设置最大内存分配记录表长度是4096,每个记录项目大小为16字节,总共预留内存为32KB。实际应用中如果处理小而多的数据,这个值可以加大,这是一个可配置的选项。
本的内存分配记录表结构如图3所示,它包含三个部分:分别是(A)S152有效性检测区,共是12个字节。其值名称为MAListVerification,MAListVerification的初始化16进制值为AAAAAAAAAAAAAAAAAAAAAAAA,二进制为101010…(重复24个1010)。该值用于判定内存分配记录表的有效性,原因是系统异常时有可能内存写入越界(内存泄露),导致内存分配记录表损坏。MAListVerification初始化后不会再次修改,每次访问时检测该值是否正常,如果异常要通知应用系统结束处理过程,查找原因。(B)第二部分包含两个值,当前顺序分配指针S153,用于采用循环首次适应法分配内存,另一个值S154表示最大内存分配记录表单元数。S10初始化时S153置为0,S154是最大可分配内存次数。(C)第三部分是数据结构,连续存放内存分配记录表单元,每个单元包括不重复的分配ID、所分配的内存物理地址/或静态内存区相对地址、分配长度、内存共享者数据、类型,共16字节。
内存分配记录单元内容进一步说明:
Alloc_ID:4个字段,取值从1000开始,整个运行期不会重复;是所分配内存使用的关键标识;该值为0时表示该记录分配记录单元未使用,后面Alloc_Addr、Alloc_Len等值均无效。
Alloc_Addr:物理地址或相对地址,如果分配静态内存,该值为相对地址,即本发明装置所管理的内存地址;如果由操作系统所分配的动态地址,该值为物理内存地址(操作系统可以识别的地址)。
Alloc_Len:分配长度。
Alloc_Share:该内存块共享计数;
Alloc_Type:静态内存分配标志为1,操作系统动态内存分配标志为十六进制“FF”。
S10初始化时内存分配记录表全部置为空。
S10初始化还包括初始化设置一些参数:逆序分配最大空间、内存分配增长期判定参数、一个周期性操作结束判断参数。
步骤S20:应用系统内存需求上升期申请的内存,或由应用系统申请内存,申请容量为RequiredMemory,流程如下:
如果RequiredMemory+S105<S106,则内存分配记录表中创建新的Alloc_ID,记录Alloc_Addr=S105,Alloc_Len=RequiredMemory,Alloc_Share=1,Alloc_Type=1;然后S105=S105+RequiredMemory。
如果RequiredMemory+S105>S106,则内存分配记录表中创建新的Alloc_ID,从操作系统申请RequiredMemory大小的内存,记录Alloc_Addr=从操作系统获得的地址,Alloc_Len=RequiredMemory,Alloc_Share=1,Alloc_Type=FF。
应用系统内存释放期申请的内存,或碎片整理期申请内存,申请容量为RequiredMemory,采用逆序分配方法,流程如下:
从S108开始分配,如果该区域已被占用,则把占用的数据先移到动态内存区,按本发明方法,发生这种情况的几率很低。
如果S106-RequiredMemory<S105,按上述方法向操作系统申请动态内存,并记录内存分配记录表,S106不变。
如果S106-RequiredMemory>S105,然后S106=S106-RequiredMemory。创建新的Alloc_ID,记录Alloc_Addr=S106,Alloc_Len=RequiredMemory,Alloc_Share=1,Alloc_Type=1。
其中,M1内存需求上升期基本判断方法为两次分配间隔不超过1秒的连续内存分配量达上次最大分配量的1/5,并且还在继续分配作为标志,静态内存碎片整理期以上升期结束10秒后,5秒以内连续释放总内存分配量的2/3为标志。具体应用时本装置根据多次应用的具体统计数据调整上述参数,应用程序也可以以通知的方式告知本发明装置所处内存管理的各个时期。
M1内存需求上升期与碎片整理期判断的基本依据为周期性操作的大数据处理的基本特点是一个周期开始有需要分配较多的内存,加载部分等处理的数据;处理结束后集中释放大量的数据。
进一步地,根据本发明长期使用的统计数据可以对上述参数做自适应处理。根据本发明中顺序分配和逆序分配方法,如果内存需求上升期与碎片整理期判断有误时,即时修正,结果不受影响,仅会消耗一定的CPU资源,比如突然多了100毫秒的等待。
步骤S30:动态碎片整理——一个大数据处理周期结果后进入碎片整理期,以备下一周期有连续的静态内存空间可供使用,残留内存数据向静态内存区末端移动。具体实施方法如下:
步骤S301首先对S124内存区进行整理,该区内所有未释放的内存块均向后移动,形成整片连续已分配的逆序分配内存区,S106为目前逆序分配指针,修改相应的内存分配记录表S112。
本发明中内存数据块移动实施办法有两种情况,(A)移动目标内存区与移动源内存区无重叠,直接拷贝数据并修改内存分配记录表;(B)为了保证顺序分配区与逆序分配区连续无空隙分配,并有连续大空间可用,本发明内存数据移动时有可能出现目标内存区与源内存区有重叠的情况,如果出现重叠,先分配静态或动态临时内存缓冲区,将源数据移动到临时内存缓冲区,修改内存分配记录表,保证移动过程中数据可用性;再从临时内存缓冲区移动到目标内存区。
步骤S302对所有内存分配记录表中Alloc_Type=1,并且Alloc_ID>10000,并且不在逆序分配区S124的项目,执行步骤S303和S304、S305。
步骤S303对Alloc_Addr指向静态内存区的项目执行步骤S304,否则执行步骤S305。
步骤S304逆序分配长度为Alloc_Len的内存,新地址为Alloc_Addr(New),将源地址Alloc_Addr长度为Alloc_Len的数据移动到新地址Alloc_Addr(New),更新内存分配记录表Alloc_Addr的值。
S302全部执行完成后,指针S105与指针S103相等,S103到S106为整块连续可用的静态内存空间。
步骤S305是可选步骤,如果选择执行该步骤,将重新向操作系统申请动态内存、移动数据、释放原内存、修改内存分配记录表。执行S305的目的是利用操作系统内存管理的特点,消耗较少的时间,使操作系统所管理的内存也得到一定程度的清理。即大量释放少量保留的情况下,对少量保留的数据重新分配内存,会分配在靠前的位置,后面会变成大块连续内存空间。
步骤S30有一个进一步的补充步骤:一个操作周期后如果残留数据大小(RemainedDataSize)大于静态内存总量的1/3时,在S30执行完成后,如果能成功向操作系统申请到RemainedDataSize的动态内存,就将S124逆序分配区的数据整块移动到新申请的动态内存中,然后修改内存分配记录表、以及S106=S104。这样整个静态内存区用于下一个操作周期内存分配需求。
动态碎片整理后本发明装置的内存状态如图6所示,这样对于每个操作周期,本发明装置的内存状态如同刚开始运行一样,不受长期运行后大量内存碎片问题、以及虚拟内存数据移动问题影响效率与稳定性。
本发明装置的内存释放实施方法有两种情况,根据本发明内存记录表的记录类型,选择内存释放操作:(A)在静态内存区的释放操作(Alloc_Type=1),仅需修改使用状态标志,即Alloc_ID=0;(B)由操作系统动态分配的内存(Alloc_Type=FF),修改标志并通知操作系统释放相应的内存。
内存动态整理期发生在一个操作周期结束以后,动态碎片整理期间装置处于加锁状态,数据访问和新的分配内存、释放都处于等待状态,以此保证数据和内存地址的准确性。我们实际测试中,多数情况下内存动态碎片整理时间在1少以内,少数情况也少于3秒。
以上是本发明提出的针对周期性大数据处理操作的内存管理方法及装置,以下对我们应用本发明前后的情况进行说明:
本发明应用测试计算机为通用微型计算机,内存配置为1G-32G,一个操作周期处理50-10000帧图像,图像分辨率通常为512×512到3000×3000之间,每个图像处理需要存放原始数据、处理中间数据以及显示缓冲数据,约为原图像大小的2.5倍。比如在CT扫描图像分析中,医院每天检查100人,进行100个类似的操作周期。本发明应用之前,平均进行处理10余个操作周期,操作系统会提示“Out of system resources”、“out of memory”等内存资源不足信息,然后必须重启系统。当计算机内存配置是最大图像处理内存需求量的2倍以上时,情况略好,但更多的操作周期过后还是会出现上述内存资源不足的信息和故障。采用本发明后上述问题基本消失。每天处理50-100个操作周期,有时可以数天不关机、不退系统的连续处理,在我们观察范围没见到出现上述内存资源不足的情况。
以下是我们应用本发明中在几种配置情况下的近似数据:
(A)计算机内存为1GB,操作系统占用约500MB,静态内存分配300MB、每个操作周期处理数据300MB以内,逆序分配区最大分配约为50MB,操作系统动态分配量不超过30M。在不大于上述数据量的20%时长期运行稳定。
(B)计算机内存为2GB,操作系统占用约800MB,静态内存分配800MB、每个操作周期处理数据800MB以内,逆序分配区最大分配约为100MB,操作系统动态分配量不超过40MB。在不大于上述数据量的20%时长期运行稳定。
(C)计算机内存为4GB,操作系统占用约1GB,静态内存分配1600MB、每个操作周期处理数据1600MB以内,逆序分配区最大分配约为150MB(增长很少),操作系统动态分配量不超过50MB。需求大于2G的处理周期较少,系统运行稳定正常。
通过对逆序内存分配量以及动态内存分配量,可以衡量每个操作周期总内存分配量、内存释放后的碎片情况。对这几个参数进行不断统计分析,可以对上述参数的配置得到更准确的结果。
根据长期实验和应用观察表明,本发明方法和装置在周期性操作的大数据处理中,对提高系统稳定性和运行效率具有显著的效果。
通过对一些已公开的相关内存管理方法相比,本发明方法和装置针对周期性操作的大数据处理中每个操作周期开始基本无内存碎片,从而保证了系统长期稳定的运行。在这种针对性的应用中,其它现有技术和方法均达不到如此效果。
以上所述仅为本发明的一个实施例,并不能以此限制本发明,凡在本发明的思想和方法范围内,所做的任何修改、改进,均应包含在本发明保护的范围之内。
Claims (6)
1.一种周期性大数据处理的内存管理方法,其特征在于其中内存分配管理包括正序分配、逆序分配以及静态内存管理与动态分配相结合,内存整理是将所管理的静态内存保持前段完全连续可用,未释放的数据逆序连续存放于末段。
2.如权利要求1所述的周期性大数据处理的内存管理方法,其特征在于按以下步骤:
M0:初始化阶段——根据应用程序所处理的数据的特点、计算机内存配置的容量大小、以及历史分配情况以及当前计算机可分配内存条件来确定预分配静态内存额,向操作系统申请分配一块较大的内存,该内存称为静态内存,然后建立内存分配记录表并初始化,初始化正向静态内存分配指针S103、正向分配当前位置指针S105、逆序分配指针S104、逆序分配当前位置指针S106;
M1:内存分配管理——应用系统内存需求上升期,在静态内存区中从S103顺序无空隙地向后分配,顺序分配指针S105向后移;静态内存不足以满足分配需求时,按应用系统实际申请分配的内存大小向操作系统申请动态内存,并记入内存分配记录表,经过一个大数据处理操作周期后,进入静态内存碎片整理期,残留内存数据移动整理时,需再分配静态内存空间,这个阶段的分配进入逆序分配,就是由S104开始分配,最终把所有静态内存中未释放的数据都移动到S104开始到S106的一段连续无空隙的静态内存区;
M2:动态碎片整理——一个大数据处理周期结束后进入碎片整理期,以备下一周期有连续的静态内存空间可供使用,残留内存数据向静态内存区末端移动;结合M1内存分配方法,对静态内存中未释放的内存进行逆序内存再分配并移动数据;通过内存分配记录表,判断残留数据量大小,如果残留数据大于静态内存总量的1/3时,在动态碎片整理完成后,向操作系统重新申请过渡内存区,将静态内存区末端存放数据的区域移动到过渡内存区以存放残留数据;
M3:内存释放——根据内存记录表处理内存释放操作,在静态内存区的释放操作,仅需修改使用状态标志;由操作系统动态分配的内存,修改标志并通知操作系统释放相应的内存。
3.如权利要求1所述的周期性大数据处理的内存管理方法,其特征在于M1内存需求上升期标志为:两次分配间隔不超过1秒的连续内存分配量达上次最大分配量的1/5,并且还在继续分配作为标志,静态内存碎片整理期以上升期结束10秒后,5秒以内连续释放总内存分配量的2/3为标志。
4.如权利要求1所述的周期性大数据处理的内存管理方法,其特征在于:M1正序分配和逆序分配共用一块连续的静态内存区,静态内存用完或超过时,S105指针等于或接近S106。
5.如权利要求1所述的周期性大数据处理的内存管理方法,其特征在于:M1分配内存时,如果需求内存量RequiredMemory+S105>S106时,向操作系统申请相应的内存。
6.一种周期性大数据处理的内存管理装置,其特征在于:包括包括初始化管理模块、内存分配管理模块、内存整理模块、操作过程监测模块、装置释放模块,
初始化模块根据应用需求、计算机内存配置、以及历史分配情况、当前计算机可分配内存条件确定预分配静态内存额,向操作系统申请分配,完成记录数据初始化;
内存分配管理模块,在内存需求上升期在静态内存区中顺序无空隙地向后分配,内存碎片整理期残留内存移动再分配时在静态内存空间由后向前分配,静态内存不足以满足分配需求时向操作系统申请动态内存,并统一管理;
内存整理模块,主要包括一个动态内存碎片整理程序,在一个大数据处理周期结果后进入碎片整理,以备下一周期有连续的静态内存空间可供使用,残留内存数据向静态内存区末端移动,如果残留数据过大则向操作系统重新申请过渡内存区来存放残留数据;
操作过程监测模块,用于动态判断内存整理模块运行启动的时机,即判断内存分配处理需求上升期、内存集中释放期的开始与结束时机,启动对应的内存分配方案以及内存整理模块中的动态内存碎片整理程序,并对由于判断不准确引起的小问题进行修正;
装置释放模块,释放所有由操作系统分配的动态内存,依次释放静态再分配内存,最后释放预分配的静态内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410338967.0A CN104090848B (zh) | 2014-07-16 | 2014-07-16 | 一种周期性大数据处理的内存管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410338967.0A CN104090848B (zh) | 2014-07-16 | 2014-07-16 | 一种周期性大数据处理的内存管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104090848A true CN104090848A (zh) | 2014-10-08 |
CN104090848B CN104090848B (zh) | 2017-03-08 |
Family
ID=51638566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410338967.0A Expired - Fee Related CN104090848B (zh) | 2014-07-16 | 2014-07-16 | 一种周期性大数据处理的内存管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104090848B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804703A (zh) * | 2018-06-19 | 2018-11-13 | 北京焦点新干线信息技术有限公司 | 一种数据异常检测方法及装置 |
CN109492018A (zh) * | 2018-09-12 | 2019-03-19 | 武汉达梦数据库有限公司 | 一种数据同步系统自适应动态调整方法和装置 |
CN109614240A (zh) * | 2018-12-13 | 2019-04-12 | 锐捷网络股份有限公司 | 内存申请方法、设备及存储介质 |
US10417005B2 (en) | 2015-03-17 | 2019-09-17 | Huawei Technologies Co., Ltd. | Multi-multidimensional computer architecture for big data applications |
CN110941564A (zh) * | 2018-09-25 | 2020-03-31 | 杭州海康威视数字技术股份有限公司 | 一种存储空间分配方法、装置、电子设备以及存储介质 |
CN111488116A (zh) * | 2019-01-29 | 2020-08-04 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111679909A (zh) * | 2020-05-19 | 2020-09-18 | 深圳市元征科技股份有限公司 | 数据处理方法、装置及终端设备 |
CN111858508A (zh) * | 2020-06-17 | 2020-10-30 | 远光软件股份有限公司 | 一种日志系统的调控方法、装置、存储介质及电子设备 |
CN111984425A (zh) * | 2020-09-30 | 2020-11-24 | 杭州未名信科科技有限公司 | 用于操作系统的内存管理方法、装置及设备 |
CN112114964A (zh) * | 2020-08-17 | 2020-12-22 | 上海睿赛德电子科技有限公司 | 一种适用于嵌入式系统的应用安全访问内核方法 |
CN113688062A (zh) * | 2020-05-18 | 2021-11-23 | 北京市商汤科技开发有限公司 | 用于存储数据的方法和相关产品 |
CN114595162A (zh) * | 2022-05-10 | 2022-06-07 | 紫光同芯微电子有限公司 | 用于java智能卡内存碎片整理的方法和装置 |
WO2022227997A1 (zh) * | 2021-04-30 | 2022-11-03 | 华为技术有限公司 | 内存申请方法及相关设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5784699A (en) * | 1996-05-24 | 1998-07-21 | Oracle Corporation | Dynamic memory allocation in a computer using a bit map index |
CN1570883A (zh) * | 2003-07-15 | 2005-01-26 | 中兴通讯股份有限公司 | 嵌入式实时操作系统中非缓冲内存动态分配方法 |
CN1635482A (zh) * | 2003-12-29 | 2005-07-06 | 北京中视联数字系统有限公司 | 一种嵌入式系统内存管理的方法 |
US20070220229A1 (en) * | 2006-03-16 | 2007-09-20 | Fujitsu Limited | Memory area allocation control device, storage medium storing its program and its method |
CN101169759A (zh) * | 2007-11-08 | 2008-04-30 | Ut斯达康通讯有限公司 | 应用程序级的内存管理方法 |
US20080172427A1 (en) * | 2007-01-12 | 2008-07-17 | Takafumi Ito | Host device and memory system |
CN101231619A (zh) * | 2008-02-22 | 2008-07-30 | 浙江大学 | 一种基于非连续页的动态内存管理方法 |
CN101281491A (zh) * | 2008-05-12 | 2008-10-08 | 北京邮电大学 | 基于VxWorks的空间机器人中央处理器的内存模块及其管理方法 |
US20120102289A1 (en) * | 2010-10-21 | 2012-04-26 | International Business Machines Corporation | Organization of a small object area and a large object area in a java heap |
CN102521145A (zh) * | 2011-12-23 | 2012-06-27 | 东信和平智能卡股份有限公司 | Java卡系统及其空间分配处理方法 |
CN103678152A (zh) * | 2014-01-08 | 2014-03-26 | 广州思泰信息技术有限公司 | 一种小内存微型控制器零碎片的动态内存分配方法 |
CN103678172A (zh) * | 2013-12-25 | 2014-03-26 | Tcl集团股份有限公司 | 一种本地数据缓存管理方法及装置 |
-
2014
- 2014-07-16 CN CN201410338967.0A patent/CN104090848B/zh not_active Expired - Fee Related
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5784699A (en) * | 1996-05-24 | 1998-07-21 | Oracle Corporation | Dynamic memory allocation in a computer using a bit map index |
CN1570883A (zh) * | 2003-07-15 | 2005-01-26 | 中兴通讯股份有限公司 | 嵌入式实时操作系统中非缓冲内存动态分配方法 |
CN1635482A (zh) * | 2003-12-29 | 2005-07-06 | 北京中视联数字系统有限公司 | 一种嵌入式系统内存管理的方法 |
US20070220229A1 (en) * | 2006-03-16 | 2007-09-20 | Fujitsu Limited | Memory area allocation control device, storage medium storing its program and its method |
US20080172427A1 (en) * | 2007-01-12 | 2008-07-17 | Takafumi Ito | Host device and memory system |
CN101169759A (zh) * | 2007-11-08 | 2008-04-30 | Ut斯达康通讯有限公司 | 应用程序级的内存管理方法 |
CN101231619A (zh) * | 2008-02-22 | 2008-07-30 | 浙江大学 | 一种基于非连续页的动态内存管理方法 |
CN101281491A (zh) * | 2008-05-12 | 2008-10-08 | 北京邮电大学 | 基于VxWorks的空间机器人中央处理器的内存模块及其管理方法 |
US20120102289A1 (en) * | 2010-10-21 | 2012-04-26 | International Business Machines Corporation | Organization of a small object area and a large object area in a java heap |
CN102521145A (zh) * | 2011-12-23 | 2012-06-27 | 东信和平智能卡股份有限公司 | Java卡系统及其空间分配处理方法 |
CN103678172A (zh) * | 2013-12-25 | 2014-03-26 | Tcl集团股份有限公司 | 一种本地数据缓存管理方法及装置 |
CN103678152A (zh) * | 2014-01-08 | 2014-03-26 | 广州思泰信息技术有限公司 | 一种小内存微型控制器零碎片的动态内存分配方法 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10417005B2 (en) | 2015-03-17 | 2019-09-17 | Huawei Technologies Co., Ltd. | Multi-multidimensional computer architecture for big data applications |
CN108804703A (zh) * | 2018-06-19 | 2018-11-13 | 北京焦点新干线信息技术有限公司 | 一种数据异常检测方法及装置 |
CN108804703B (zh) * | 2018-06-19 | 2021-09-17 | 北京焦点新干线信息技术有限公司 | 一种数据异常检测方法及装置 |
CN109492018B (zh) * | 2018-09-12 | 2020-12-22 | 武汉达梦数据库股份有限公司 | 一种数据同步系统自适应动态调整方法和装置 |
CN109492018A (zh) * | 2018-09-12 | 2019-03-19 | 武汉达梦数据库有限公司 | 一种数据同步系统自适应动态调整方法和装置 |
CN110941564A (zh) * | 2018-09-25 | 2020-03-31 | 杭州海康威视数字技术股份有限公司 | 一种存储空间分配方法、装置、电子设备以及存储介质 |
CN109614240A (zh) * | 2018-12-13 | 2019-04-12 | 锐捷网络股份有限公司 | 内存申请方法、设备及存储介质 |
CN111488116A (zh) * | 2019-01-29 | 2020-08-04 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111488116B (zh) * | 2019-01-29 | 2022-11-22 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN113688062A (zh) * | 2020-05-18 | 2021-11-23 | 北京市商汤科技开发有限公司 | 用于存储数据的方法和相关产品 |
CN111679909A (zh) * | 2020-05-19 | 2020-09-18 | 深圳市元征科技股份有限公司 | 数据处理方法、装置及终端设备 |
CN111679909B (zh) * | 2020-05-19 | 2024-02-23 | 深圳市元征科技股份有限公司 | 数据处理方法、装置及终端设备 |
CN111858508A (zh) * | 2020-06-17 | 2020-10-30 | 远光软件股份有限公司 | 一种日志系统的调控方法、装置、存储介质及电子设备 |
CN112114964A (zh) * | 2020-08-17 | 2020-12-22 | 上海睿赛德电子科技有限公司 | 一种适用于嵌入式系统的应用安全访问内核方法 |
CN111984425A (zh) * | 2020-09-30 | 2020-11-24 | 杭州未名信科科技有限公司 | 用于操作系统的内存管理方法、装置及设备 |
CN111984425B (zh) * | 2020-09-30 | 2024-04-02 | 浙江省北大信息技术高等研究院 | 用于操作系统的内存管理方法、装置及设备 |
WO2022227997A1 (zh) * | 2021-04-30 | 2022-11-03 | 华为技术有限公司 | 内存申请方法及相关设备 |
CN114595162A (zh) * | 2022-05-10 | 2022-06-07 | 紫光同芯微电子有限公司 | 用于java智能卡内存碎片整理的方法和装置 |
CN114595162B (zh) * | 2022-05-10 | 2022-08-19 | 紫光同芯微电子有限公司 | 用于java智能卡内存碎片整理的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104090848B (zh) | 2017-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104090848A (zh) | 一种周期性大数据处理的内存管理方法及装置 | |
TWI531974B (zh) | 管理巢狀執行串流的方法和系統 | |
CN105843748B (zh) | 一种对内存中内存页的处理方法及装置 | |
US8832174B2 (en) | System and method for dynamic task migration on multiprocessor system | |
CN102087619B (zh) | 用于提高事件处理的涡轮加速性能的方法和装置 | |
US20120166498A1 (en) | Garbage collection in a multiple virtual machine environment | |
TWI488118B (zh) | 處理系統中動態產生任務的傳訊、排序和執行 | |
CN105027093A (zh) | 用于压缩和紧凑虚拟存储器的方法和装置 | |
CN105094751B (zh) | 一种用于流式数据并行处理的内存管理方法 | |
CN102455976B (zh) | 一种中间件内存管理的方法 | |
JP2015503816A (ja) | ハイブリッドなライトスルー/ライトバックキャッシュポリシーマネージャ、ならびに関連するシステムおよび方法 | |
CN106547612A (zh) | 一种多任务处理方法及装置 | |
CN107783812B (zh) | 虚拟机内存管理方法及装置 | |
CN101799773A (zh) | 并行计算的内存访问方法 | |
CN104731799A (zh) | 内存数据库管理装置 | |
CN103246570A (zh) | Hadoop的调度方法、系统及管理节点 | |
CN110727517A (zh) | 一种基于分区设计的内存分配方法和装置 | |
CN103218305B (zh) | 存储空间的分配方法 | |
US20100332785A1 (en) | Memory management system and method thereof | |
CN104111896A (zh) | 大数据处理中的虚拟内存管理方法及其装置 | |
US20120089803A1 (en) | Cache index coloring for virtual-address dynamic allocators | |
CN105469173A (zh) | 一种静态内存进行优化管理的方法 | |
CN102375780B (zh) | 一种分布式文件系统中元数据缓存管理的方法 | |
CN103020077A (zh) | 一种电力系统实时数据库内存管理方法 | |
CN104572483B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170308 |
|
CF01 | Termination of patent right due to non-payment of annual fee |