当前位置: 首页 > 专利查询>浙江大学专利>正文

解决频繁分配释放同等大小内存的方法技术

技术编号:2855292 阅读:421 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种解决频繁分配释放同等大小内存的方法。本发明专利技术的方法通过维护一个可以扩展的内存池的链表,用函数来动态控制内存池链表中内存池的大小和内存池的数量。用链表来管理内存池,避免了一般内存池分配方式在内存池不够大的情况下,需要扩展原来的内存池,不能扩展的时候不得不重新分配更大的内存块作为内存池,导致内存碎片增多,不断的扩展内存池又导致了频繁分配内存的情况。用函数来控制分配的内存池的大小和数量,使得应用程序能更有效的利用内存和节约内存,提高应用程序内存的可定制性。

【技术实现步骤摘要】

本专利技术涉及应用程序内存管理技术,特别是涉及一种。
技术介绍
内存是计算机类产品的重要硬件设施,应用程序的内存分配释放都是建立在操作系统对内存的管理之上的。操作系统提供接口比如malloc,free等函数供应用程序进行内存的相关操作,操作系统本身则对应用程序的内存使用情况进行管理。操作系统的内存管理机制会产生几种内存浪费的情况内部碎片和外部碎片。操作系统的内存管理机制遵循一些基本的内存分配规则。例如,所有内存的分配必须起始于可被4、8或16整除的地址。内存管理机制把仅仅预定大小的内存块分配给应用程序。当一个应用程序请求一个43字节的内存块的时候,内存管理机制可能会给它分配44个字节、或者48个字节甚至更多满足内存分配规则的内存。由所需大小四舍五入而产生的多余空间叫内部碎片。当已分配内存块之间出现未被使用的差额时,就会产生外部碎片。例如,一个应用程序分配三个连续的内存块,然后释放中间的内存块。操作系统的内存管理机制可以重新使用中间的内存块供将来的内存块进行分配。但不太可能将来分配的内存块的大小跟操作系统的所有空闲内存块一样大。那么内存管理机制只能从大的空闲内存块中间分割出小的满足本文档来自技高网...

【技术保护点】
一种解决频繁分配释放同等大小内存的方法,其特征在于:1)记频繁分配释放同等大小内存的大小为msize,内存池链表的指针为plist,第n个内存池为mpn,内存池的起始地址为psn,结束地址为pen,内存池的第一个free标志的内存在 该内存池的位置为freen; 2)定义一个函数f(n)用来决定第n个内存池的大小,f(n)值等于0或者小于0,则表示应用程序设定了大小为msize的内存块的个数上限,大小为前面n-1次分配的内存块的个数的和;3)当应用程序需 要大小为msize的内存时,则从内存池链表的第一个内存池开始,逐个判断内存池的freen是否大于...

【技术特征摘要】
1一种解决频繁分配释放同等大小内存的方法,其特征在于1)记频繁分配释放同等大小内存的大小为msize,内存池链表的指针为plist,第n个内存池为mpn,内存池的起始地址为psn,结束地址为pen,内存池的第一个free标志的内存在该内存池的位置为freen;2)定义一个函数f(n)用来决定第n个内存池的大小,f(n)值等于0或者小于0,则表示应用程序设定了大小为msize的内存块的个数上限,大小为前面n-1次分配的内存块的个数的和;3)当应用程序需要大小为msize的内存时,则从内存池链表的第一个内存池开始,逐个判断内存池的freen是否大于f(n);如果freen小于等于f(n),表示该内存池有空闲内存可以分配,返回该内存池;如果freen大于f(n),表示该内存池没有空闲内存可以使用,判断下一个内存池;如果没有下一个内存池,并且f(n)>0,那么新建一个大小为F(n)的内存池,其中F(n)=...

【专利技术属性】
技术研发人员:卜佳俊陈纯方丰平柯化成
申请(专利权)人:浙江大学
类型:发明
国别省市:86[中国|杭州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1