CN110674052A - 内存管理方法、服务器及可读存储介质 - Google Patents

内存管理方法、服务器及可读存储介质 Download PDF

Info

Publication number
CN110674052A
CN110674052A CN201910942879.4A CN201910942879A CN110674052A CN 110674052 A CN110674052 A CN 110674052A CN 201910942879 A CN201910942879 A CN 201910942879A CN 110674052 A CN110674052 A CN 110674052A
Authority
CN
China
Prior art keywords
memory
block
line element
pages
memory block
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
Application number
CN201910942879.4A
Other languages
English (en)
Other versions
CN110674052B (zh
Inventor
陈慕仪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN201910942879.4A priority Critical patent/CN110674052B/zh
Publication of CN110674052A publication Critical patent/CN110674052A/zh
Application granted granted Critical
Publication of CN110674052B publication Critical patent/CN110674052B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

本申请实施例提供一种内存管理方法、服务器及可读存储介质,通过对服务器的内存池进行划分,得到多个用于分段加锁的内存块,并将每一内存块分别划分为多个数据区域后,从每一内存块中划分出多个内存页,从而可以将数据存储到不同的内存块中,同时将内存块连接到不同的数据区域中,并将内存页划分为多个内存页块进行内存管理和分配,由此避免内存管理过程中存在的碎片化问题,节约存储空间的资源,从而提升内存使用效率以及业务数据并发访问的速度。

Description

内存管理方法、服务器及可读存储介质
技术领域
本申请涉及内存管理领域,具体而言,涉及一种内存管理方法、服务器及可读存储介质。
背景技术
目前的内存管理方案中,存在明显的碎片化问题,导致存储空间的资源浪费严重,从而影响内存使用效率以及业务数据并发访问的速度。
发明内容
有鉴于此,本申请的目的在于提供一种内存管理方法、服务器及可读存储介质,能够避免内存管理过程中存在的碎片化问题,节约存储空间的资源,从而提升内存使用效率以及业务数据并发访问的速度。
根据本申请的一方面,提供一种内存管理方法,应用于服务器,所述方法包括:
响应内存初始化操作,对所述服务器的内存池进行划分,得到多个用于分段加锁的内存块;
将每一内存块分别划分为多个数据区域,并根据每一内存块的多个数据区域从该内存块中划分出多个内存页;
对所述多个内存页分别进行数据块分类,得到多个内存页块,并将每个内存页块中的数据连接到所对应的内存块的不同数据区域中。
根据本申请的另一方面,提供一种内存管理方法,应用于服务器,所述服务器的内存池预先划分为多个用于分段加锁的内存块,每一内存块分别划分为多个数据区域,且预先根据每一内存块的多个数据区域从每一内存块中划分出多个内存页,每一内存块中的多个内存页通过数据块分类得到多个内存页块,每个内存页块中的数据连接到所对应的内存块的不同数据区域中,所述方法包括:
接收内存管理请求;
根据该内存管理请求对对应的内存块中的数据区域执行相应的内存管理操作。
根据本申请的另一方面,提供一种内存管理装置,应用于服务器,所述装置包括:
第一划分模块,用于响应内存初始化操作,对所述服务器的内存池进行划分,得到多个用于分段加锁的内存块;
第二划分模块,用于将每一内存块分别划分为多个数据区域,并根据每一内存块的多个数据区域从该内存块中划分出多个内存页;
数据分类模块,用于对所述多个内存页分别进行数据块分类,得到多个内存页块,并将每个内存页块中的数据连接到所对应的内存块的不同数据区域中。
根据本申请的另一方面,提供一种内存管理装置,其特征在于,应用于服务器,所述服务器的内存池预先划分为多个用于分段加锁的内存块,每一内存块分别划分为多个数据区域,且预先根据每一内存块的多个数据区域从每一内存块中划分出多个内存页,每一内存块中的多个内存页通过数据块分类得到多个内存页块,每个内存页块中的数据连接到所对应的内存块的不同数据区域中,所述装置包括:
请求接收模块,用于接收内存管理请求;
内存能管理模块,用于根据该内存管理请求对对应的内存块中的数据区域执行相应的内存管理操作。
根据本申请的另一方面,提供一种服务器,所述服务器包括机器可读存储介质及处理器,所述机器可读存储介质存储有机器可执行指令,所述处理器在执行所述机器可执行指令时,该服务器实现前述的内存管理方法。
根据本申请的另一方面,提供一种可读存储介质,所述可读存储介质中存储有机器可执行指令,所述机器可执行指令被执行时实现前述的内存管理方法。
基于上述任一方面,本申请通过对服务器的内存池进行划分,得到多个用于分段加锁的内存块,并将每一内存块分别划分为多个数据区域后,从每一内存块中划分出多个内存页,从而可以将数据存储到不同的内存块中,同时将内存块连接到不同的数据区域中,并将内存页划分为多个内存页块进行内存管理和分配,由此避免内存管理过程中存在的碎片化问题,节约存储空间的资源,从而提升内存使用效率以及业务数据并发访问的速度。此外,不止适用于普通内存的使用和分配,也可以适用于基于文件的共享内存使用和分配。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的内存管理方法的一种流程示意图;
图2示出了图1中所示的步骤S110的子步骤流程示意图;
图3示出了图1中所示的步骤S120的子步骤流程示意图;
图4示出了本申请实施例所提供的页面索引数组区域、内存分配数据区域、行内元素标签区域的映射关系示意图;
图5示出了本申请实施例所提供的内存管理方法的另一种流程示意图;
图6示出了图5中所示的步骤S220的子步骤流程示意图之一;
图7示出了图5中所示的步骤S220的子步骤流程示意图之二;
图8示出了本申请实施例所提供的第一内存管理装置的功能模块示意图;
图9示出了本申请实施例所提供的第二内存管理装置的功能模块示意图;
图10示出了本申请实施例所提供的用于实现上述内存管理方法的服务器的结构示意框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请实施例的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其它操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其它实施例,都属于本申请保护的范围。
图1示出了本申请实施例提供的内存管理方法的流程示意图,应当理解,在其它实施例中,本实施例的内存管理方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。该内存管理方法的详细步骤介绍如下。
步骤S110,响应内存初始化操作,对服务器的内存池进行划分,得到多个用于分段加锁的内存块。
步骤S120,将每一内存块分别划分为多个数据区域,并根据每一内存块的多个数据区域从该内存块中划分出多个内存页。
步骤S130,对多个内存页分别进行数据块分类,得到多个内存页块,并将每个内存页块中的数据连接到所对应的内存块的不同数据区域中22。
本实施例提供的内存管理方法,通过对服务器的内存池进行划分,得到多个用于分段加锁的内存块,并将每一内存块分别划分为多个数据区域后,从每一内存块中划分出多个内存页,从而可以将数据存储到不同的内存块中,同时将内存块连接到不同的数据区域中,并将内存页划分为多个内存页块进行内存管理和分配,由此避免内存管理过程中存在的碎片化问题,节约存储空间的资源,从而提升内存使用效率以及业务数据并发访问的速度。此外,本实施例不止适用于普通内存的使用和分配,也可以适用于基于文件的共享内存使用和分配。
在一种可能的实施方式中,为了避免空置内存过多导致资源浪费,针对步骤S110,本实施例可以将内存池划分成多个类别的内存块,例如请结合参阅图2,步骤S110可以包括子步骤S111和子步骤S112,具体描述如下:
子步骤S111,根据预先配置的内存块类别确定待划分的每个内存块的内存块大小。
子步骤S112,根据待划分的每个内存块的内存块大小,对服务器的内存池进行划分,得到每个内存块类别所对应的内存块。
本实施例中,每一内存块类别可对应一种内存块大小。例如,可以定义内存块类别分为大内存块和小内存块,如大内存块可以是大于256K的内存,小内存块可以是小于等于256k的内存。然后,将内存块划为多个不同类别,例如可以划分为77个不同类别,用于表示从0到256k的不同内存块。
可选地,内存块大小可以在[16,128]之间按16字节对齐,在[129,256*1024]之间按(2^(n+1)-2^n)/8对齐,n为7~18,即[129,130,...,256*1024]会被映射为[128+16,128+2*16,...,128+8*16,256+32,256+2*32,...,256+8*32],超过256*1024以上的按内存页对齐。
由此,可以得到每个内存块类别所对应的内存块,从而便于后续选择内存块时可以根据不同的内存块类别选择不同的内存块进行内存分配,避免空置内存过多导致资源浪费的情况。
在一种可能的实施方式中,针对步骤S120,为了将内存块连接到不同的数据区域中,从而将数据存储到不同的多个分类内存块中,降低资源浪费,本实施例可以将每一内存块进行不同数据区域的划分,例如可以划分出但不限于行内元素标签区域、页面索引数组区域和内存分配数据区域等,本实施例对此不作具体限制。
在此基础上,可以根据每一内存块的多个数据区域从该内存块中划分出多个内存页,例如在一种可能的实施方式中,请结合参阅图3,步骤S120可以包括子步骤S121、子步骤S122以及子步骤S123,具体描述如下。
子步骤S121,针对每一内存块,计算该内存块中的行内元素标签区域、页面索引数组区域和内存分配数据区域的第一内存和,以及页面索引数组区域、页面索引数组区域和单个内存页的第二内存和。
子步骤S122,根据第一内存和以及第二内存和计算该内存块中的可划分内存页数量。
例如,可以将第一内存和除以第二内存和以得到该内存块中的可划分内存页数量。
子步骤S123,根据该内存块中的可划分内存页数量从该内存块中划分出多个内存页。
本实施例中,页面索引数组区域中的每个页面索引类别、内存分配数据区域中包括每个内存页,以及行内元素标签区域的每个行内元素标签指针之间存在相互映射关系。
例如,请结合参阅图4,span链表即为行内元素标签区域,pagemap数组即为页面索引数组区域,data:32K页数组即为内存分配数据区域。页面索引数组区域中包括N个页面索引类别,内存分配数据区域中包括N个内存页,以及行内元素标签区域包括N个行内元素标签指针,N个页面索引类别、N个内存页以及N个行内元素标签指针存在相互映射关系。
例如,页面索引数组区域中_pPageMap[i]的下标i,就对应内存分配数据区域中的第i页内存页,页面索引数组区域pagemap[i]里面存放的值是某个行内元素标签指针的地址(相对地址),其表示的是第i页内存页由哪个行内元素标签指针管理。
由此,可以根据该内存块中的可划分内存页数量从该内存块中划分出多个内存页,每个内存页可以按照类别大小切分成多个组块内存块chunk,每个组块内存块chunk都具有一个索引标识index。
基于上述步骤,通过从每个内存块中分别划分出多个内存页进行管理和分配,能够避免内存管理过程中存在的碎片化问题,节约存储空间的资源,从而提升内存使用效率以及业务数据并发访问的速度。
进一步地,请参阅图5,示出了本申请实施例所提供的内存管理方法另一种流程示意图,下面针对该内存管理方法进行详细阐述。
步骤S210,接收内存管理请求。
步骤S220,根据该内存管理请求对对应的内存块中的数据区域执行相应的内存管理操作。
本实施例提供的内存管理方法,服务器100的内存池预先划分为多个用于分段加锁的内存块,每一内存块分别划分为多个数据区域,且预先根据每一内存块的多个数据区域从每一内存块中划分出多个内存页,每一内存块中的多个内存页通过数据块分类得到多个内存页块,每个内存页块中的数据连接到所对应的内存块的不同数据区域中,具体内存的划分方法可以参照前述内存管理方法实施例执行。如此,在接收到内存管理请求后,根据内存管理请求对对应的内存块中的数据区域执行相应的内存管理操作,可以避免内存管理过程中存在的碎片化问题,节约存储空间的资源,从而提升内存使用效率以及业务数据并发访问的速度。
在一种可能的实施方式中,针对步骤S220,若该内存管理请求为内存分配请求时,表示本次请求需要分配内存,请结合参阅图6,步骤S220可以通过如下子步骤实现:
子步骤S221,根据内存分配请求中所申请分配的内存大小,从多个内存块中确定对应的目标内存块。
例如,以前述示例为例,假设所申请分配的内存大小为60个字节,则对应第五个类别。
子步骤S222,查找目标内存块的中心链表区域是否为空。
若目标内存块的中心链表区域不为空,则执行:
子步骤S223,从目标内存块的行内元素标签区域中第一个行内元素标签,并从该行内元素标签的对象值中计算出该行内元素标签所管理的下一个可写的组块内存块绝对地址。
子步骤S224,跳转到该组块内存块绝对地址,从该组块内存块绝对地址中的起始字节中记录下一个对象的位置,并更新该行内元素标签管理的下一个可写相对地址以及已用组块数量。
例如,从该组块内存块绝对地址开始的4个字节中记录下一个对象的位置,更新该行内元素标签管理的下一个可写相对地址以及已用组块数量,一种示例性的实现方式可以如下:
更新该行内元素标签管理的下一个可写相对地址:
size_t p=*(reinterpret_cast<size_t*>(result));
span->objects=p;
更新该行内元素标签当前的已用组块数量:++(span->refcount)。
子步骤S225,计算当前组块在该行内元素标签管理的各个内存页中的位置索引值,并返回该组块内存块绝对地址、该位置索引值以及该行内元素标签的页码,以完成内存分配。
例如,计算当前组块在该行内元素标签管理的各个内存页中的位置索引值的一种示例性实现方式可以是:
iIndex=(span->objects-(_pShmFlagHead->_iShmPageAddr+(iPageId<<kPageShift)))/_size。
在另一种可能的实施方式中,若目标内存块的中心链表区域为空,则请结合参阅图7,步骤S220还可以包括如下子步骤:
子步骤S226,根据目标内存块确定待分配内存页的数量。
子步骤S227,若待分配内存页的数量低于预设数量,则在该目标内存块的Free小块内存链表区域中查找是否存在对应的行内元素标签。例如,预设Free小块内存链表区域free[s]中的s范围是从k到32,则遍历free[s]下的链表是否为空。
子步骤S228,若在该目标内存块的Free小块内存链表区域中查找到不存在对应的行内元素标签,或者待分配内存页的数量不低于预设数量,则从该目标内存块的Large大块内存链表区域中查找是否存在可分配内存。
子步骤S229,若从该目标内存块的Large大块内存链表区域中查找到不存在可分配内存,则返回内存为空的提示信息后执行内存分配操作。
在一种可能的实施方式中,在子步骤S229中,执行内存分配操作具体可以通过如下方式实现:
首先,从行内元素标签区域中提取一个行内元素标签。
例如,首先可以从行内元素标签区域中得到当前可用的行内元素标签索引,一种可能的实现方式可以是如下:
unsignedchar*result=_pData+(_pHead->_firstAvailableSpan*_pHead->_iSpanSize)。
其中,pData指向区域8开始处,_pHead指向区域7内容,iSpanSize就是一个TC_Span的大小(52个字节)。
接着,获取当前可用的行内元素标签索引的位置信息。
而后,根据当前可用的行内元素标签索引的位置信息,从行内元素标签区域中提取一个行内元素标签,并更新行内元素标签区域中标记的可用行内元素标签数量后,将提取出的行内元素标签的首地址返回。
在此基础上,可以为行内元素标签的内容进行赋值。
例如,首先可以计算行内元素标签的页码,一种可能的实现方式可以是:
constsize_tp
=(ptr-iBeginAddr-_pShmFlagHead->_iShmPageAddr)>>kPageShift;//pagenum
然后,根据行内元素标签的页码更新行内元素标签的信息,并更新该页码对应的行内元素标签在行内元素标签分配指针区域中的地址后,将该地址写入到页面索引数组区域中,一种可能的实现方式可以是:
span->start=p;//更新Span开始的页码(large对应的span这个页码为0)
span->length=size;//更新start后面有多少个页
span->sizeclass=0;//large不属于任何类型
span->location=TC_Span::ON_FREELIST;//没有写入任何数据,所以是free。
接着,将赋值内容后的行内元素标签连接到Large大块内存链表区域的尾部,并返回执行从该目标内存块的Large大块内存链表区域中查找是否存在可分配内存的操作。
此外,若从该目标内存块的Large大块内存链表区域中查找到存在可分配内存,则遍历查找Large大块内存链表区域下的每一项行内元素标签的长度是否大于该目标内存块的内存页数。在查找到长度大于该目标内存块的内存页数的行内元素标签后,从Large大块内存链表区域提取多个内存页,并从行内元素标签区域中提取一个新的行内元素标签管理提取的多个内存页。
又例如,若从该目标内存块的Large大块内存链表区域中查找到存在可分配内存,则扣除本次需要的内存页数,并判断Large大块内存链表区域中的剩余内存页数是否小于设定页数。
若不小于,则从行内元素标签区域中分配一个行内元素标签以管理Large大块内存链表区域中的剩余内存页,并将该行内元素标签管理的剩余内存页切分成多个小内存块后,将该行内元素标签挂载到中心链表区域之前。
若小于,则将所有行内元素标签从Large大块内存链表区域中脱离,并从行内元素标签区域中分配一个行内元素标签以管理Large大块内存链表区域中的剩余内存页,将剩余内存页连接到Free小块内存链表区域的头部后,将行内元素标签区域管理的内存页数修改为预设页数。最后类似上述步骤,将该行内元素标签区域管理的剩余内存页切分成多个小内存块后,将该行内元素标签挂载到中心链表区域之前。
在此基础上,作为一种可能的实施方式,在从行内元素标签区域中分配一个行内元素标签以管理Large大块内存链表区域中的剩余内存页之后,本实施例还可以进一步更新这个分配的行内元素标签的信息,接下来给出一种可能的示例:
第一、更新分配的行内元素标签的信息以及Large大块内存链表区域中的行内元素标签信息。
例如,例如,从行内元素标签区域中提取一个新的行内元素标签管理提取的多个内存页具体可以是:计算行内元素标签区域的剩余页数extra:extra=length–k(leght为行内元素标签区域管理的页总长度,如果是Large大块内存链表区域中的行内元素标签,则长度是N,k是本次内存分配请求的所需内存页数)。
如果extra大于设定页数(例如32),则提取分配一个行内元素标签管理,然后更新这个新的行内元素标签管理的信息。例如,首先将这个新的行内元素标签的开始管理的页码start标记为Large大块内存链表区域开始管理的页码start,然后将这个新的行内元素标签管理的长度length标记为该内存分配请求所需的长度k。
接着,将这个新的行内元素标签的类型标记为IN_USE,并标记开始管理的页码start对应的行内元素标签地址,为这个新的行内元素标签的相对地址。而后,更新Large大块内存链表区域下的行内元素标签信息,例如可以是将其开始管理的页码start向右移动k个页码(即移动到未使用的页码处),然后将其管理的长度length(后面的长度)标记为上述的extra,并更新上述新的行内元素标签的开始管理的页码start对应的行内元素标签的相对地址,为Large大块内存链表区域的行内元素标签的地址。由此,可以通过新的行内元素标签管理提取的多个内存页。
第二、更新分配的行内元素标签管理的类别和其管理的页码标识对应的行内元素标签的相对地址。
第三、根据页码标识得到对应的页码绝对地址,并根据页码绝对地址得到对应的内存类别的内存大小。
例如,根据页码标识得到对应的页码绝对地址的一种可能的实现方式可以是:
size_tiBeginAddr=reinterpret_cast<size_t>(_pShmFlagHead);
char*ptr=reinterpret_cast<char*>(iBeginAddr+_pShmFlagHead->_iShmPageAddr+(span->start<<kPageShift))。
第四、根据行内元素标签管理的内存页数量得到行内元素标签管理的内存总大小。
第五、将内存总大小除以内存类别的内存大小,得到切分内存块数量。
第六、根据切分内存块数量将剩余内存页进行内存块切割,得到对应的内存块切割链表。并将内存块切割链表的头地址赋值到行内元素标签的内存块变量中。
其中,内存块变量中存储是一个相对的位置,表示这个行内元素标签管理的内存页(k个页)的第一个内存块。
第七、将行内元素标签连接到中央管理链表的头部(例如中央管理链表的nonempty链表的头部),并返回查找目标内存块的中心链表区域是否为空的操作。
在一种可能的实施方式中,针对步骤S220,若该内存管理请求为内存释放请求时,表示本次请求需要释放内存,此时则可获取该对应的内存块中行内元素标签的绝对地址。
例如,可以从页面索引数组区域查找内存释放请求对应的内存页面表示pageid对应的行内元素标签的相对地址,从而得到行内元素标签的绝对地址。然后结合参阅图4,可以根据绝对地址将该行内元素标签管理的trunk集合减一(refcount-1),并该行内元素标签的可用地址对象向前移动预设数量(index)个trunk单位。如此,完成了内存释放。
基于同一发明构思,请参阅图8,示出了本申请实施例提供的第一内存管理装置200的功能模块示意图,本实施例可以根据上述方法实施例对第一内存管理装置200进行功能模块的划分。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。比如,在采用对应各个功能划分各个功能模块的情况下,图8示出的第一内存管理装置200只是一种装置示意图。其中,第一内存管理装置200可以包括第一划分模块210、第二划分模块220以及数据分类模块230内存管理模块320,下面分别对该第一内存管理装置200的各个功能模块的功能进行详细阐述。
第一划分模块210,用于响应内存初始化操作,对服务器100的内存池进行划分,得到多个用于分段加锁的内存块。可以理解,该第一划分模块210可以用于执行上述步骤S110,关于该第一划分模块210的详细实现方式可以参照上述对步骤S110有关的内容。
第二划分模块220,用于将每一内存块分别划分为多个数据区域,并根据每一内存块的多个数据区域从该内存块中划分出多个内存页。可以理解,该第二划分模块220可以用于执行上述步骤S120,关于该第二划分模块220的详细实现方式可以参照上述对步骤S120有关的内容。
数据分类模块230,用于对多个内存页分别进行数据块分类,得到多个内存页块,并将每个内存页块中的数据连接到所对应的内存块的不同数据区域中。可以理解,该数据分类模块230可以用于执行上述步骤S130,关于该数据分类模块230的详细实现方式可以参照上述对步骤S130有关的内容。
内存管理模块320内存管理模块320内存管理模块320在一种可能的实施方式中,第一划分模块210可以通过以下方式对服务器100的内存池进行划分,得到多个内存块:
根据预先配置的内存块类别确定待划分的每个内存块的内存块大小,其中,每一内存块类别对应一种内存块大小;
根据待划分的每个内存块的内存块大小,对服务器100的内存池进行划分,得到每个内存块类别所对应的内存块。
在一种可能的实施方式中,第二划分模块220可以通过以下方式从该内存块中划分出多个内存页:
针对每一内存块,计算该内存块中的行内元素标签区域、页面索引数组区域和内存分配数据区域的第一内存和,以及页面索引数组区域、页面索引数组区域和单个内存页的第二内存和;
根据第一内存和以及第二内存和计算该内存块中的可划分内存页数量;
根据该内存块中的可划分内存页数量从该内存块中划分出多个内存页;
其中,页面索引数组区域中的每个页面索引类别、内存分配数据区域中包括每个内存页,以及行内元素标签区域的每个行内元素标签指针之间存在相互映射关系。
基于同一发明构思,请参阅图9,示出了本申请实施例提供的第二内存管理装置300的功能模块示意图,本实施例可以根据上述方法实施例对第二内存管理装置300进行功能模块的划分。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。比如,在采用对应各个功能划分各个功能模块的情况下,图9示出的第二内存管理装置300只是一种装置示意图。其中,第二内存管理装置300可以包括请求接收模块310以及内存管理模块320,下面分别对该第二内存管理装置300的各个功能模块的功能进行详细阐述。
请求接收模块310,用于接收内存管理请求。可以理解,该请求接收模块310可以用于执行上述步骤S210,关于该内存管理模块3200的详细实现方式可以参照上述对步骤S210有关的内容。
内存管理模块320,用于根据该内存管理请求对对应的内存块中的数据区域执行相应的内存管理操作。可以理解,该内存管理模块320可以用于执行上述步骤S220,关于该内存管理模块320的详细实现方式可以参照上述对步骤S220有关的内容。
在一种可能的实施方式中,内存管理模块320可以通过以下方式对对应的内存块执行相应的内存管理操作:
若该内存管理请求为内存分配请求,则根据内存分配请求中所申请分配的内存大小,从多个内存块中确定对应的目标内存块;
查找目标内存块的中心链表区域是否为空;
若目标内存块的中心链表区域不为空,则从目标内存块的行内元素标签区域中第一个行内元素标签,并从该行内元素标签的对象值中计算出该行内元素标签所管理的下一个可写的组块内存块绝对地址;
跳转到该组块内存块绝对地址,从该组块内存块绝对地址中的起始字节中记录下一个对象的位置,并更新该行内元素标签管理的下一个可写相对地址以及已用组块数量;
计算当前组块在该行内元素标签管理的各个内存页中的位置索引值,并返回该组块内存块绝对地址、该位置索引值以及该行内元素标签的页码,以完成内存分配。
在一种可能的实施方式中,内存管理模块320还可以用于:
若目标内存块的中心链表区域为空,则根据目标内存块确定待分配内存页的数量;
若待分配内存页的数量低于预设数量,则在该目标内存块的Free小块内存链表区域中查找是否存在对应的行内元素标签;
若在该目标内存块的Free小块内存链表区域中查找到不存在对应的行内元素标签,或者待分配内存页的数量不低于预设数量,则从该目标内存块的Large大块内存链表区域中查找是否存在可分配内存;
若从该目标内存块的Large大块内存链表区域中查找到不存在可分配内存,则返回内存为空的提示信息后执行内存分配操作。
在一种可能的实施方式中,内存管理模块320还可以用于:
若从该目标内存块的Large大块内存链表区域中查找到存在可分配内存,则遍历查找Large大块内存链表区域下的每一项行内元素标签的长度是否大于该目标内存块的内存页数;
在查找到长度大于该目标内存块的内存页数的行内元素标签后,从Large大块内存链表区域提取多个内存页,并从行内元素标签区域中提取一个新的行内元素标签管理提取的多个内存页。
在一种可能的实施方式中,内存管理模块320还可以用于:
若从该目标内存块的Large大块内存链表区域中查找到存在可分配内存,则扣除本次需要的内存页数,并判断Large大块内存链表区域中的剩余内存页数是否小于设定页数;
若不小于,则从行内元素标签区域中分配一个行内元素标签以管理Large大块内存链表区域中的剩余内存页,并将该行内元素标签管理的剩余内存页切分成多个小内存块后,将该行内元素标签挂载到中心链表区域之前;
若小于,则将所有行内元素标签从Large大块内存链表区域中脱离,并从行内元素标签区域中分配一个行内元素标签以管理Large大块内存链表区域中的剩余内存页,将剩余内存页连接到Free小块内存链表区域的头部后,将行内元素标签区域管理的内存页数修改为预设页数;
将该行内元素标签区域管理的剩余内存页切分成多个小内存块后,将该行内元素标签挂载到中心链表区域之前。
在一种可能的实施方式中,内存管理模块320还可以用于:
更新分配的行内元素标签的信息以及Large大块内存链表区域中的行内元素标签信息;
更新分配的行内元素标签管理的类别和其管理的页码标识对应的行内元素标签的相对地址;
根据页码标识得到对应的页码绝对地址,并根据页码绝对地址得到对应的内存类别的内存大小;
根据行内元素标签管理的内存页数量得到行内元素标签管理的内存总大小;
将内存总大小除以内存类别的内存大小,得到切分内存块数量;
根据切分内存块数量将剩余内存页进行内存块切割,得到对应的内存块切割链表;并将内存块切割链表的头地址赋值到行内元素标签的内存块变量中;
将行内元素标签连接到中央管理链表的头部,并返回查找目标内存块的中心链表区域是否为空的操作。
在一种可能的实施方式中,内存管理模块320还可以通过以下方式返回内存为空的提示信息后执行内存分配操作:
从行内元素标签区域中提取一个行内元素标签;
为行内元素标签的内容进行赋值;
将赋值内容后的行内元素标签连接到Large大块内存链表区域的尾部,并返回执行从该目标内存块的Large大块内存链表区域中查找是否存在可分配内存的操作。
在一种可能的实施方式中,内存管理模块320可以通过以下方式从行内元素标签区域中提取一个行内元素标签:
从行内元素标签区域中得到当前可用的行内元素标签索引;
获取当前可用的行内元素标签索引的位置信息;
根据当前可用的行内元素标签索引的位置信息,从行内元素标签区域中提取一个行内元素标签,并更新行内元素标签区域中标记的可用行内元素标签数量后,将提取出的行内元素标签的首地址返回。
在一种可能的实施方式中,内存管理模块320可以通过以下方式为行内元素标签的内容进行赋值:
计算行内元素标签的页码;
根据行内元素标签的页码更新行内元素标签的信息,并更新该页码对应的行内元素标签在行内元素标签分配指针区域中的地址后,将该地址写入到页面索引数组区域中。
在一种可能的实施方式中,内存管理模块320还可以通过以下方式对对应的内存块执行相应的内存管理操作:
若该内存管理请求为内存释放请求,则获取该对应的内存块中行内元素标签的绝对地址;
根据绝对地址将该行内元素标签管理的trunk集合减一,并该行内元素标签的可用地址对象向前移动预设数量个trunk单位。
基于同一发明构思,请参阅图10,示出了本申请实施例提供的用于执行上述内存管理方法的服务器100的结构示意框图,该服务器100可以包括机器可读存储介质120和处理器130。
本实施例中,机器可读存储介质120与处理器130均位于服务器100中且二者分离设置。然而,应当理解的是,机器可读存储介质120也可以是独立于服务器100之外,且可以由处理器130通过总线接口来访问。可替换地,机器可读存储介质120也可以集成到处理器130中,例如,可以是高速缓存和/或通用寄存器。
处理器130是该服务器100的控制中心,利用各种接口和线路连接整个服务器100的各个部分,通过运行或执行存储在机器可读存储介质120内的软件程序和/或模块,以及调用存储在机器可读存储介质120内的数据,执行该服务器100的各种功能和处理数据,从而对服务器100进行整体监控。可选地,处理器130可包括一个或多个处理核心;例如,处理器130可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器中。
其中,处理器130可以是一个通用的中央处理器(Central Processing Unit,CPU),微处理器,特定应用集成电路(Application-Specific Integrated Circuit,ASIC),或一个或多个用于控制上述方法实施例提供的内存管理方法的程序执行的集成电路。
机器可读存储介质120可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmabler-Only MEMory,EEPROM)、只读光盘(Compactdisc Read-Only MEMory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。机器可读存储介质120可以是独立存在,通过通信总线与处理器130相连接。机器可读存储介质120也可以和处理器集成在一起。其中,机器可读存储介质120用于存储执行本申请方案的机器可执行指令。处理器130用于执行机器可读存储介质120中存储的机器可执行指令,以实现前述方法实施例提供的内存管理方法。
由于本申请实施例提供的服务器100是上述服务器100执行的方法实施例的另一种实现形式,且服务器100可用于执行上述方法实施例提供的内存管理方法,因此其所能获得的技术效果可参考上述方法实施例,在此不再赘述。
进一步地,本申请实施例还提供一种包含计算机可执行指令的可读存储介质,计算机可执行指令在被执行时可以用于实现上述方法实施例提供的内存管理方法。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的方法操作,还可以执行本申请任意实施例所提供的内存管理方法中的相关操作。
本申请实施例是参照根据本申请实施例的方法、设备和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看所述附图、公开内容、以及所附权利要求书,可理解并实现所述公开实施例的其他变化。在权利要求中,“包括”一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
以上所述,仅为本申请的各种实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (15)

1.一种内存管理方法,其特征在于,应用于服务器,所述方法包括:
响应内存初始化操作,对所述服务器的内存池进行划分,得到多个用于分段加锁的内存块;
将每一内存块分别划分为多个数据区域,并根据每一内存块的多个数据区域从该内存块中划分出多个内存页;
对所述多个内存页分别进行数据块分类,得到多个内存页块,并将每个内存页块中的数据连接到所对应的内存块的不同数据区域中。
2.根据权利要求1所述的内存管理方法,其特征在于,所述对所述服务器的内存池进行划分,得到多个内存块的步骤,包括:
根据预先配置的内存块类别确定待划分的每个内存块的内存块大小,其中,每一内存块类别对应一种内存块大小;
根据所述待划分的每个内存块的内存块大小,对所述服务器的内存池进行划分,得到每个内存块类别所对应的内存块。
3.根据权利要求1所述的内存管理方法,其特征在于,所述根据每一内存块的多个数据区域从该内存块中划分出多个内存页的步骤,包括:
针对每一内存块,计算该内存块中的行内元素标签区域、页面索引数组区域和内存分配数据区域的第一内存和,以及页面索引数组区域、页面索引数组区域和单个内存页的第二内存和;
根据所述第一内存和以及所述第二内存和计算该内存块中的可划分内存页数量;
根据该内存块中的可划分内存页数量从该内存块中划分出多个内存页;
其中,所述页面索引数组区域中的每个页面索引类别、所述内存分配数据区域中包括每个内存页,以及所述行内元素标签区域的每个行内元素标签指针之间存在相互映射关系。
4.一种内存管理方法,其特征在于,应用于服务器,所述服务器的内存池预先划分为多个用于分段加锁的内存块,每一内存块分别划分为多个数据区域,且预先根据每一内存块的多个数据区域从每一内存块中划分出多个内存页,每一内存块中的多个内存页通过数据块分类得到多个内存页块,每个内存页块中的数据连接到所对应的内存块的不同数据区域中,所述方法包括:
接收内存管理请求;
根据该内存管理请求对对应的内存块中的数据区域执行相应的内存管理操作。
5.根据权利要求4所述的内存管理方法,其特征在于,所述根据该内存管理请求对对应的内存块中的数据区域执行相应的内存管理操作的步骤,包括:
若该内存管理请求为内存分配请求,则根据所述内存分配请求中所申请分配的内存大小,从多个内存块中确定对应的目标内存块;
查找所述目标内存块的中心链表区域是否为空;
若所述目标内存块的中心链表区域不为空,则从所述目标内存块的行内元素标签区域中第一个行内元素标签,并从该行内元素标签的对象值中计算出该行内元素标签所管理的下一个可写的组块内存块绝对地址;
跳转到该组块内存块绝对地址,从该组块内存块绝对地址中的起始字节中记录下一个对象的位置,并更新该行内元素标签管理的下一个可写相对地址以及已用组块数量;
计算当前组块在该行内元素标签管理的各个内存页中的位置索引值,并返回该组块内存块绝对地址、该位置索引值以及该行内元素标签的页码,以完成内存分配。
6.根据权利要求5所述的内存管理方法,其特征在于,所述根据该内存管理请求对对应的内存块中的数据区域执行相应的内存管理操作的步骤,还包括:
若所述目标内存块的中心链表区域为空,则根据所述目标内存块确定待分配内存页的数量;
若所述待分配内存页的数量低于预设数量,则在该目标内存块的Free小块内存链表区域中查找是否存在对应的行内元素标签;
若在该目标内存块的Free小块内存链表区域中查找到不存在对应的行内元素标签,或者所述待分配内存页的数量不低于预设数量,则从该目标内存块的Large大块内存链表区域中查找是否存在可分配内存;
若从该目标内存块的Large大块内存链表区域中查找到不存在可分配内存,则返回内存为空的提示信息后执行内存分配操作。
7.根据权利要求6所述的内存管理方法,其特征在于,所述根据该内存管理请求对对应的内存块中的数据区域执行相应的内存管理操作的步骤,还包括:
若从该目标内存块的Large大块内存链表区域中查找到存在可分配内存,则遍历查找所述Large大块内存链表区域下的每一项行内元素标签的长度是否大于该目标内存块的内存页数;
在查找到长度大于该目标内存块的内存页数的行内元素标签后,从所述Large大块内存链表区域提取多个内存页,并从行内元素标签区域中提取一个新的行内元素标签管理提取的多个内存页。
8.根据权利要求6所述的内存管理方法,其特征在于,所述根据该内存管理请求对对应的内存块中的数据区域执行相应的内存管理操作的步骤,还包括:
若从该目标内存块的Large大块内存链表区域中查找到存在可分配内存,则扣除本次需要的内存页数,并判断所述Large大块内存链表区域中的剩余内存页数是否小于设定页数;
若不小于,则从行内元素标签区域中分配一个行内元素标签以管理所述Large大块内存链表区域中的剩余内存页,并将该行内元素标签管理的剩余内存页切分成多个小内存块后,将该行内元素标签挂载到所述中心链表区域之前;
若小于,则将所有行内元素标签从所述Large大块内存链表区域中脱离,并从行内元素标签区域中分配一个行内元素标签以管理所述Large大块内存链表区域中的剩余内存页,将所述剩余内存页连接到Free小块内存链表区域的头部后,将行内元素标签区域管理的内存页数修改为预设页数;
将该行内元素标签区域管理的剩余内存页切分成多个小内存块后,将该行内元素标签挂载到所述中心链表区域之前。
9.根据权利要求8所述的内存管理方法,其特征在于,所述从行内元素标签区域中分配一个行内元素标签以管理所述Large大块内存链表区域中的剩余内存页之后,所述根据该内存管理请求对对应的内存块中的数据区域执行相应的内存管理操作的步骤,还包括:
更新分配的所述行内元素标签的信息以及所述Large大块内存链表区域中的行内元素标签信息;
更新分配的所述行内元素标签管理的类别和其管理的页码标识对应的行内元素标签的相对地址;
根据所述页码标识得到对应的页码绝对地址,并根据所述页码绝对地址得到对应的内存类别的内存大小;
根据所述行内元素标签管理的内存页数量得到所述行内元素标签管理的内存总大小;
将所述内存总大小除以所述内存类别的内存大小,得到切分内存块数量;
根据所述切分内存块数量将所述剩余内存页进行内存块切割,得到对应的内存块切割链表;并将所述内存块切割链表的头地址赋值到行内元素标签的内存块变量中;
将所述行内元素标签连接到中央管理链表的头部,并返回查找所述目标内存块的中心链表区域是否为空的操作。
10.根据权利要求6所述的内存管理方法,其特征在于,所述返回内存为空的提示信息后执行内存分配操作的步骤,包括:
从所述行内元素标签区域中提取一个行内元素标签;
为所述行内元素标签的内容进行赋值;
将赋值内容后的行内元素标签连接到所述Large大块内存链表区域的尾部,并返回执行从该目标内存块的Large大块内存链表区域中查找是否存在可分配内存的操作。
11.根据权利要求10所述的内存管理方法,其特征在于,所述从所述行内元素标签区域中提取一个行内元素标签的步骤,包括:
从所述行内元素标签区域中得到当前可用的行内元素标签索引;
获取所述当前可用的行内元素标签索引的位置信息;
根据所述当前可用的行内元素标签索引的位置信息,从所述行内元素标签区域中提取一个行内元素标签,并更新所述行内元素标签区域中标记的可用行内元素标签数量后,将提取出的行内元素标签的首地址返回。
12.根据权利要求10所述的内存管理方法,其特征在于,所述为所述行内元素标签的内容进行赋值的步骤,包括:
计算所述行内元素标签的页码;
根据所述行内元素标签的页码更新所述行内元素标签的信息,并更新该页码对应的行内元素标签在行内元素标签分配指针区域中的地址后,将该地址写入到页面索引数组区域中。
13.根据权利要求4所述的内存管理方法,其特征在于,所述根据该内存管理请求对对应的内存块中的数据区域执行相应的内存管理操作的步骤,包括:
若该内存管理请求为内存释放请求,则获取该对应的内存块中行内元素标签的绝对地址;
根据所述绝对地址将该行内元素标签管理的trunk集合减一,并该行内元素标签的可用地址对象向前移动预设数量个trunk单位。
14.一种服务器,所述服务器包括机器可读存储介质及处理器,所述机器可读存储介质存储有机器可执行指令,所述处理器在执行所述机器可执行指令时,该服务器实现权利要求1-13中任意一项所述的内存管理方法。
15.一种可读存储介质,其特征在于,所述可读存储介质中存储有机器可执行指令,所述机器可执行指令被执行时实现权利要求1-13中任意一项所述的内存管理方法。
CN201910942879.4A 2019-09-30 2019-09-30 内存管理方法、服务器及可读存储介质 Active CN110674052B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910942879.4A CN110674052B (zh) 2019-09-30 2019-09-30 内存管理方法、服务器及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910942879.4A CN110674052B (zh) 2019-09-30 2019-09-30 内存管理方法、服务器及可读存储介质

Publications (2)

Publication Number Publication Date
CN110674052A true CN110674052A (zh) 2020-01-10
CN110674052B CN110674052B (zh) 2022-03-22

Family

ID=69080479

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910942879.4A Active CN110674052B (zh) 2019-09-30 2019-09-30 内存管理方法、服务器及可读存储介质

Country Status (1)

Country Link
CN (1) CN110674052B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111352863A (zh) * 2020-03-10 2020-06-30 腾讯科技(深圳)有限公司 内存管理方法、装置、设备及存储介质
CN111506436A (zh) * 2020-03-25 2020-08-07 炬星科技(深圳)有限公司 实现内存共享的方法、电子设备和共享内存数据管理库
CN113867969A (zh) * 2021-11-30 2021-12-31 深圳华云信息系统有限公司 一种内存分块方法、装置、电子设备及存储介质
CN114153785A (zh) * 2021-11-29 2022-03-08 北京志凌海纳科技有限公司 基于远程直接内存访问的内存管理方法和设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063385A (zh) * 2010-12-23 2011-05-18 深圳市金宏威实业发展有限公司 一种内存管理方法和系统
CN102156675A (zh) * 2010-02-12 2011-08-17 中兴通讯股份有限公司 一种内存分配方法及装置
US20110231611A1 (en) * 2008-10-22 2011-09-22 Hideyuki Koseki Storage apparatus and cache control method
CN105354147A (zh) * 2014-08-20 2016-02-24 腾讯科技(深圳)有限公司 一种内存池管理方法及管理系统
CN106681829A (zh) * 2016-12-09 2017-05-17 上海斐讯数据通信技术有限公司 一种内存管理方法及系统
CN109902032A (zh) * 2019-01-31 2019-06-18 泰康保险集团股份有限公司 堆外内存管理方法、装置、介质及电子设备
CN110287044A (zh) * 2019-07-02 2019-09-27 广州虎牙科技有限公司 无锁共享内存处理方法、装置、电子设备及可读存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110231611A1 (en) * 2008-10-22 2011-09-22 Hideyuki Koseki Storage apparatus and cache control method
CN102156675A (zh) * 2010-02-12 2011-08-17 中兴通讯股份有限公司 一种内存分配方法及装置
CN102063385A (zh) * 2010-12-23 2011-05-18 深圳市金宏威实业发展有限公司 一种内存管理方法和系统
CN105354147A (zh) * 2014-08-20 2016-02-24 腾讯科技(深圳)有限公司 一种内存池管理方法及管理系统
CN106681829A (zh) * 2016-12-09 2017-05-17 上海斐讯数据通信技术有限公司 一种内存管理方法及系统
CN109902032A (zh) * 2019-01-31 2019-06-18 泰康保险集团股份有限公司 堆外内存管理方法、装置、介质及电子设备
CN110287044A (zh) * 2019-07-02 2019-09-27 广州虎牙科技有限公司 无锁共享内存处理方法、装置、电子设备及可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
蒋智鹏: "内存数据库的存储管理", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111352863A (zh) * 2020-03-10 2020-06-30 腾讯科技(深圳)有限公司 内存管理方法、装置、设备及存储介质
CN111352863B (zh) * 2020-03-10 2023-09-01 腾讯科技(深圳)有限公司 内存管理方法、装置、设备及存储介质
CN111506436A (zh) * 2020-03-25 2020-08-07 炬星科技(深圳)有限公司 实现内存共享的方法、电子设备和共享内存数据管理库
CN111506436B (zh) * 2020-03-25 2024-05-14 炬星科技(深圳)有限公司 实现内存共享的方法、电子设备和共享内存数据管理库
CN114153785A (zh) * 2021-11-29 2022-03-08 北京志凌海纳科技有限公司 基于远程直接内存访问的内存管理方法和设备
CN114153785B (zh) * 2021-11-29 2022-08-30 北京志凌海纳科技有限公司 基于远程直接内存访问的内存管理方法和设备
CN113867969A (zh) * 2021-11-30 2021-12-31 深圳华云信息系统有限公司 一种内存分块方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN110674052B (zh) 2022-03-22

Similar Documents

Publication Publication Date Title
CN110674052B (zh) 内存管理方法、服务器及可读存储介质
US6505283B1 (en) Efficient memory allocator utilizing a dual free-list structure
CN108932257B (zh) 多维度数据的查询方法及装置
CN114546295B (zh) 一种基于zns固态硬盘的智能写分配方法和装置
CN110633296A (zh) 数据查询方法、装置、介质及电子设备
CN103294718A (zh) 网页缓存管理方法和装置
CN112395322B (zh) 一种基于分级缓存的列表数据显示方法、装置及终端设备
WO2017050064A1 (zh) 共享内存数据库的内存管理方法及装置
CN104850505A (zh) 基于链式堆叠的内存管理方法与系统
CN113674131A (zh) 硬件加速器设备管理方法、装置及电子设备和存储介质
CN110389712A (zh) 数据写入方法及其装置、固态硬盘和计算机可读存储介质
CN114327917A (zh) 内存管理方法、计算设备及可读存储介质
US7334104B2 (en) Satisfying memory allocation requests from memory pool or lookaside lists based on memory size requested to be allocated
CN117311621A (zh) 一种缓存盘空间分配方法、装置、计算机设备及存储介质
US20060236065A1 (en) Method and system for variable dynamic memory management
CN113343045B (zh) 一种数据缓存方法及网络设备
CN110825953B (zh) 数据查询方法、装置和设备
CN117555816A (zh) 内存回收方法、装置、计算设备及计算机存储介质
CN117608856A (zh) NVMe加速卡内存扩展方法、系统、终端及存储介质
CN115658561A (zh) 配电终端内存管理方法、装置、电子设备及存储介质
EP3296878B1 (en) Electronic device and page merging method therefor
CN115080242A (zh) 一种pci设备资源统一调度的方法、装置及介质
CN113778688A (zh) 内存管理系统、内存管理方法、内存管理装置
CN110209489B (zh) 一种适用于内存页结构的内存管理方法及装置
CN117724991B (zh) 嵌入式系统的动态内存管理方法、系统、终端及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant