【技术实现步骤摘要】
一种动态内存分配器架构及其内存分配及释放方法
[0001]本专利技术属于动态内存分配器
,具体涉及一种应用在Linux用户态下的动态内存分配器架构及其内存分配及释放方法。
技术介绍
[0002]动态内存管理又被称为堆内存管理,是指计算机程序在运行期中分配使用内存,它可以当成是一种分配有限内存资源所有权的方法。动态内存管理在程序设计中具有重要的作用,因为系统的物理内存是有限的,而对内存的需求是变化的,程序的动态性越强,内存管理就越重要。如果没有动态内存,几乎现有的所有应用软件都无法运行。在动态内存频繁分配和释放的场合,例如,大型游戏,编译器,解释器,开发工具,浏览器等等,动态管理内存问题显得更加突出。
[0003]动态内存分配器就是一种动态内存的管理方法,它维护着一个进程的虚拟内存区域,称为堆,分配器将堆视为一组不同大小的块的集合来维护,每个块就是一个连续的虚拟内存碎片,这些块要么是已分配的,要么是未分配的。
[0004]评价动态内存分配器的一个指标就是它是否能够快速地分配释放内存。Linux用户态下默认 ...
【技术保护点】
【技术特征摘要】
1.一种动态内存分配器架构,应用于Linux用户态,内存块分为小内存块、大内存块和超大内存块,其特征在于,所述动态内存分配器架构由一个全局堆、多个小内存堆和每个线程特有的线程缓存组成,小内存块由小内存堆管理,大内存块由全局堆管理,超大内存块由内存分配器调用mmap或unmmap系统调用向操作系统进行申请分配或释放。2.根据权利要求1所述的一种动态内存分配器架构,其特征在于,所述小内存块的大小为(0,4024B],大内存块的大小为(4024B,1MB],超大内存块的大小大于1MB。3.根据权利要求1所述的一种动态内存分配器架构,其特征在于,所述大内存块分为256个大小类,分别是4KB、8KB直到1MB,每一个大小类中的大内存块都由一个个span组成。4.根据权利要求1所述的一种动态内存分配器架构,其特征在于,所述小内存块划分成252个大小类,分别是8B、24B、40B直到4024B,每一个大小类链表下都挂着一个个span,对应大小类的span切分成对应大小类的小内存块。5.根据权利要求4所述的一种动态内存分配器架构,其特征在于,所述线程缓存用于缓存小内存块,当线程申请小内存块时,会先从线程缓存中去找;若线程缓存中找不到则向小内存堆申请,线程缓存维护了一个小内存块大小类的数组链表,一共252个大小类,分别是8B、24B、40B直到4024B,每一个大小类链表下都挂着一个个相对应大小的小内存块。6.如权利要求1
‑
5任一项所述的动态内存分配器架构的内存分配方法,其特征在于,所述小内存块的分配方法,包括以下步骤:S1、线程发起小内存块申请请求;S2、线程首先查找线程缓存,检查线程缓存中是否有对应大小的小内存块,如果有则直接分配,没有的话转到步骤S3;S3、线程向小内存堆进行申请,检查小内存堆是否有满足要求的初始内存;若是,则从初始内存中切割出一个span,然后再将该span切割成一块块对应大小的小内存块,将这些小内存块挂到相应大小类的数组链表下,然后转到步骤S6;若否,则转至步骤S4;S4、检查对应大小类的数组链表下是否有...
【专利技术属性】
技术研发人员:贾刚勇,夏佳恒,饶欢乐,王国琨,周志奇,谢国杰,
申请(专利权)人:杭州电子科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。