[发明专利]一种周期性大数据处理的内存管理方法及装置有效
申请号: | 201410338967.0 | 申请日: | 2014-07-16 |
公开(公告)号: | CN104090848B | 公开(公告)日: | 2017-03-08 |
发明(设计)人: | 郑家亮 | 申请(专利权)人: | 云南大学 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 昆明科阳知识产权代理事务所53111 | 代理人: | 李行健 |
地址: | 650000*** | 国省代码: | 云南;53 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 周期性 数据处理 内存 管理 方法 装置 | ||
技术领域
本发明涉及计算机内存管理技术领域,尤其涉及周期性大数据处理的内存分配、整理、释放的方法及装置。
背景技术
计算机内存管理经过了数十年发展,有很多优秀的算法,包括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的一段连续无空隙的静态内存区。这样对于每个操作周期,内存状态如同刚开始运行一样,不因长期运行后大量内存碎片问题、以及虚拟内存数据移动问题而影响效率与稳定性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于云南大学,未经云南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410338967.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于多值逻辑电路的地址译码方法
- 下一篇:生成测试用例的方法