【技术实现步骤摘要】
一种内存管理方法及装置
本专利技术涉及计算机
,尤其涉及一种内存管理方法及装置。
技术介绍
对于操作系统中用户进程的内存管理,一种常见的处理方式是直接使用底层的申请释放内存操作(如,malloc的方式)来分配任意大小的内存块,但这种方式很容易产生内存碎片。一种改进的内存管理方式是通过内存池来管理内存块的分配。其中,内存池有多个管理内存分配的池子,每个池子用于分配不同大小的内存块,申请内存时按照从小到大的顺序依次访问内存池中的池子,若这个池子中内存块尺寸不够大,则继续访问分配更大内存块的池子。与直接使用底层的申请释放内存操作相比,使用内存池可以带来很多便利:①内存池可以管理预先申请的若干内存块作为缓存,加快内存申请;②释放的内存也可以由内存池管理起来;③内存池以固定的尺寸向系统申请更大块内存,可以减少内存碎片出现。尽管内存池提供了内存性能和利用率上的收益,在调查内存池的内存问题时却不比一般的内存问题更简单。以UAF(use-after-free)问题为例,若一段内存的上个使用者释放内存后仍然访问这段内存,会对申请到这段内 ...
【技术保护点】
1.一种内存管理方法,所述方法包括步骤:/n接收申请内存的请求,所述请求中包含待申请内存块的大小;/n判断当前内存池中是否存在满足预定条件的内存块;/n若当前内存池中不存在所述内存块,则从当前内存池预分配的虚拟地址空间中确定出可用地址空间;/n根据所述可用地址空间向操作系统申请内存组块;以及/n根据待申请内存块的大小从所述内存组块中分配相应的内存块,/n其中,所述内存组块中包含至少一个内存块。/n
【技术特征摘要】
1.一种内存管理方法,所述方法包括步骤:
接收申请内存的请求,所述请求中包含待申请内存块的大小;
判断当前内存池中是否存在满足预定条件的内存块;
若当前内存池中不存在所述内存块,则从当前内存池预分配的虚拟地址空间中确定出可用地址空间;
根据所述可用地址空间向操作系统申请内存组块;以及
根据待申请内存块的大小从所述内存组块中分配相应的内存块,
其中,所述内存组块中包含至少一个内存块。
2.如权利要求1所述的方法,还包括为内存池预分配虚拟地址空间的步骤,包括:
按照预定规则映射出各内存池在进程空间中的虚拟地址空间,以使得各内存池具有相互独立的虚拟地址空间。
3.如权利要求2所述的方法,其中,所述按照预定规则为各内存池预先分配虚拟地址空间、以使得各内存池具有相互独立的虚拟地址空间的步骤还包括:
按照位移将所述虚拟地址空间划分为多个子地址空间,其中每个子地址空间对应所述内存池的一个内存组块,且各子地址空间均具有状态标识符,用于指示所述子地址空间的当前状态是否为可用状态。
4.如权利要求3所述的方法,其中,所述从当前内存池预分配的虚拟地址空间中确定出可用地址空间的步骤包括:
根据所述状态标识符确定当前内存池所对应的虚拟地址空间中各子地址空间的状态;以及
按照从高地址到低地址的顺序选取可用状态的一个子地址空间,作为当前内存池的可用地址空间。
5.如权利要求1-4中任一项所述的方法,所述根据所述可用地址空间申请内存组块的步骤还包括:
根据所述可用地址空间的起始地址和空间长度申请内存组块。
6.如权利要求1-5中任一项所述的方法,其中,所述判断当前内存池中是否存在满足预定条件的内存块的步骤之后,还包括步骤:
若当前内存池中存在满足预定条件的内存块,则按照待申请内存块的大小从所述满足预定条件的内存块中分配相应的内存块。
7.如权利要求2-6中任一项所述的方法,其中,所述按照预定规则为多个内存池预先分配虚拟地址空间的步骤还包括:
生成内存块链表来记录内存池中内存组块的申请状态;以及...
【专利技术属性】
技术研发人员:常怀鑫,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛;KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。