CN115599542A - 一种共享内存池实现方法及系统 - Google Patents
一种共享内存池实现方法及系统 Download PDFInfo
- Publication number
- CN115599542A CN115599542A CN202211206076.0A CN202211206076A CN115599542A CN 115599542 A CN115599542 A CN 115599542A CN 202211206076 A CN202211206076 A CN 202211206076A CN 115599542 A CN115599542 A CN 115599542A
- Authority
- CN
- China
- Prior art keywords
- memory
- heap
- area
- memory block
- thread
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 390
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000005055 memory storage Effects 0.000 claims abstract description 21
- 238000004891 communication Methods 0.000 claims abstract description 8
- 230000008569 process Effects 0.000 claims description 21
- 238000013507 mapping Methods 0.000 claims description 9
- 238000007726 management method Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种共享内存池实现方法及系统,涉及共享内存管理技术领域;向操作系统申请内存,作为共享内存池,将所述共享内存池划分为不同heap区域,利用不同heap区域提供不同大小的内存块进行内存存储及使用,通过Header Heap区域保存数据库与共享内存的头信息,通过Data Heap区域保存数据库的数据,Data Heap区域的内存块大小固定,通过Common Heap区域供临时数据运算或通信使用,Common Heap区域的内存块大小不固定,通过System Heap区域保存元数据,通过Free Heap区域动态划拨本区域的内存块至其他没有空闲内存的heap区域,以便其他Heap区域提供内存存储及使用。
Description
技术领域
本发明公开一种方法及系统,涉及共享内存管理技术领域,具体地说是一种共享内存池实现方法及系统。
背景技术
内存池是一种内存管理方式。通常应用在服务端后台开发中,主要是为了避免频繁的从堆上面申请内存和释放内存,是以空间换取时间以提高运行效率,提高后台系统运行可靠性而采用的内存管理方式。但现有技术中内存池的设置较为单一,从内存池申请内存没有有效的管理手段,不能针对申请类型分配内存,且不能动态管理内存池内区域的分配,无法进一步提高内存池的利用效率。
发明内容
本发明针对现有技术的问题,提供一种共享内存池实现方法及系统,建设共享内存池,利用共享内存池申请内存,按照共享内存池内部各个区域结构进行内存分配,迅捷且极大地减少与操作系统的交互,从而减少不必要的消耗。
本发明提出的具体方案是:
本发明提供一种共享内存池实现方法,向操作系统申请内存,作为共享内存池,将所述共享内存池划分为不同heap区域,利用不同heap区域提供不同大小的内存块进行内存存储及使用,
所述heap区域依次包括Header Heap区域、Data Heap区域、Free Heap区域、Common Heap区域及System Heap区域,
通过Header Heap区域保存数据库与共享内存的头信息,
通过Data Heap区域保存数据库的数据,Data Heap区域的内存块大小固定,
通过Common Heap区域供临时数据运算或通信使用,Common Heap区域的内存块大小不固定,
通过System Heap区域保存元数据,
通过Free Heap区域动态划拨本区域的内存块至其他没有空闲内存的heap区域,以便其他Heap区域提供内存存储及使用。
进一步,所述的一种共享内存池实现方法中通过Free Heap区域接收线程申请,表示所述线程已向其他heap区域申请内存且相应的其他heap区域没有空闲内存,
查找Free Heap区域内符合所述线程申请内存的最小内存块,若找到符合的最小内存块,则利用最小内存块提供至其他Heap区域,以便线程获取申请的相应内存,若未找到符合的最小内存块,则通过共享内存池触发其他Heap区域的GC流程,将其他Heap区域经GC流程释放的空闲内存存入Free Heap区域,以便获得符合的最小内存块。
进一步,所述的一种共享内存池实现方法中所述查找,包括:利用反映内存块与page映射关系的前缀树查找Free Heap区域内符合所述线程申请内存的最小内存块,所述page为共享内存池中heap区域的最小内存申请单位。
进一步,所述的一种共享内存池实现方法中所述利用最小内存块提供至其他Heap区域,以便线程获取申请的相应内存,包括:
获取所述最小内存块,切割最小内存块获得线程申请的相应内存并提供给相应的其他Heap区域。
进一步,所述的一种共享内存池实现方法中所述将其他Heap区域经GC流程释放的空闲内存存入Free Heap区域,包括:
获取所述空闲内存,根据前缀树判断Free Heap区域内相邻的page是否存在空闲的内存块,若存在则合并所述空闲内存和空闲的内存块组成新内存块,并将新的page与内存块的映射关系存入前缀树。
进一步,所述的一种共享内存池实现方法中具体步骤为:
通过Free Heap区域接收线程申请;
利用前缀树查找Free Heap区域内符合所述线程申请内存的最小内存块,若找到符合的最小内存块,则从最小内存块切割出线程申请的相应内存;
若未找到符合的最小内存块,则通过共享内存池触发其他Heap区域的GC流程,将其他Heap区域经GC流程释放的空闲内存存入Free Heap区域,利用前缀树判断Free Heap区域内相邻的page是否存在空闲的内存块,若存在则合并所述空闲内存和空闲的内存块组成新内存块,并将新的page与内存块的映射关系存入前缀树,若不存在则直接将空闲内存存入Free Heap区域的内存块,
重新查找Free Heap区域符合所述线程申请内存的最小内存块,若找到符合的最小内存块,则从最小内存块切割出线程申请的相应内存,若未找到符合的最小内存块则返回错误。
进一步,所述的一种共享内存池实现方法中通过System Heap区域接收线程申请,判断线程申请内存的大小,若大于设定值则报错,
若小于设定值则根据线程申请内存的大小查找System Heap区域内符合线程申请的内存块,所述内存块为Central cache,所述Central cache被线程共享,若Centralcache中找到符合的内存块则返回相应内存块提供给线程,若Central cache中未找到符合的内存块则向Free Heap区域查看是否存在空闲的内存块,以便提供给线程。
进一步,所述的一种共享内存池实现方法中所述向Free Heap区域查看是否存在空闲的内存块,包括:
查看Free Heap区域内是否存在符合线程申请的内存块,如果没有则返回错误,否则按照线程申请内存的大小向上取整获取到相应的page数,将所述page对应的内存块放入central cache中,提供给线程申请的内存。
本发明还提供一种共享内存池实现系统,包括共享内存池管理模块,
所述共享内存池管理模块向操作系统申请内存,作为共享内存池,将所述共享内存池划分为不同heap区域,利用不同heap区域提供不同大小的内存块进行内存存储及使用,
所述heap区域依次包括Header Heap区域、Data Heap区域、Free Heap区域、Common Heap区域及System Heap区域,
通过Header Heap区域保存数据库与共享内存的头信息,
通过Data Heap区域保存数据库的数据,Data Heap区域的内存块大小固定,
通过Common Heap区域供临时数据运算或通信使用,Common Heap区域的内存块大小不固定,
通过System Heap区域保存元数据,
通过Free Heap区域动态划拨本区域的内存块代替其他没有空闲内存的heap区域提供内存存储及使用。
本发明还提供一种共享内存池实现装置,包括至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行所述的一种共享内存池实现方法。
本发明的有益之处是:
本发明提供一种共享内存池实现方法,划分为不同heap区域,利用不同heap区域提供不同大小的内存块进行内存存储及使用,针对静态数据,利用Header heap区域存储头信息,针对数据库数据利用Data heap区域存储,针对临时数据使用利用Common heap区域存储,针对元数据信息。利用System heap区域存储,而Free Heap区域放置内存池的空闲内存,划拨本区域的内存块至其他没有空闲内存的heap区域,以便其他Heap区域提供内存存储及使用。本发明方法不仅能够减少线程向操作系统申请内存的次数,对于大量线程的情况下性能有极大的提高,同时对特定的数据进行了特定的内存分配方式,也可以减少申请内存的时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明方法中共享内存池结构示意图。
图2是本发明方法涉及的前缀树映射结构示意图。
图3是本发明方法中线程向Free Heap区域申请内存流程示意图。
图4是本发明方法中线程向System Heap区域申请内存流程示意图。
具体实施方式
本发明涉及的名词:
内存(Memory)是计算机的重要部件,也称内存储器和主存储器,它用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平。只要计算机开始运行,操作系统就会把需要运算的数据从内存调到CPU中进行运算,当运算完成,CPU将结果传送出来。
共享内存池,向操作系统申请的内存,将这些内存划分成不同的区域,后续线程申请内存的时候直接从内存池申请,不需要再与操作系统进行交互,这种方式能够减少与操作系统交互的系统开销。
Free Heap,由于共享内存池一次向操作系统申请最大可用共享内存,所以在共享内存池内部会有一部分未被任何线程或进程使用的内存,此类内存为空闲内存,放置于一个区域中,这个Heap区域的称为Free Heap。
System Heap,用于存放一些系统或平台的元数据信息,比如设备、采集点等等数据,数据改动频率较低的Heap区域。
其他涉及名词均可参考现有技术的解释说明。
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
本发明提供一种共享内存池实现方法,向操作系统申请内存,作为共享内存池,将所述共享内存池划分为不同heap区域,利用不同heap区域提供不同大小的内存块进行内存存储及使用,
所述heap区域依次包括Header Heap区域、Data Heap区域、Free Heap区域、Common Heap区域及System Heap区域,
通过Header Heap区域保存数据库与共享内存的头信息,
通过Data Heap区域保存数据库的数据,Data Heap区域的内存块大小固定,
通过Common Heap区域供临时数据运算或通信使用,Common Heap区域的内存块大小不固定,
通过System Heap区域保存元数据,
通过Free Heap区域动态划拨本区域的内存块至其他没有空闲内存的heap区域,以便其他Heap区域提供内存存储及使用。
本发明方法利用不同的共享内存池Heap区域,针对不同的内存申请,应对巨大数量的数据存储工作,可以减少数据库对于内存申请的次数和消耗的时间,极大程度地减少与操作系统的交互,从而减少不必要的开销,另外不同的对象申请的内存的类型也不一样,不同类型的内存申请的方式也不尽相同,针对特定的对象可以利用不同的数据结构最大程度地减少内存申请的负担,极大程度提高效率。
具体应用中,在本发明方法的一些实施例中,向操作系统申请内存,作为共享内存池,将所述共享内存池划分为不同heap区域,参考图1,
Header heap区域,静态内存区域,保存数据库与共享内存的头信息。这些信息开机后就要加载到内存中,几乎不会变化。
Data heap区域,如图中为时序数据库的TimeSeries Data则存储时序数据与索引等数据,主要在T端存放采集上来的时序数据,内存块一般大小固定。
System heap区域,保存平台或系统等元数据信息,比如设备、采集点等等数据,数据改动频率较低。
Common heap区域,保存的数据大小不固定,主要为临时数据使用区间,比如做运算/通信等等,申请/释放/修改可能很频繁。
Free Heap区域动态划拨本区域的内存块至其他没有空闲内存的heap区域,以便其他Heap区域提供内存存储及使用。
进一步说明共享内存池创建时,先进行初始化,按照预设参数大小向操作系统申请共享内存,并固定内存,之后完成内存池不同内存区域的初始化。其中header heap区域初始化,从前往后截取共享内存池固定大小的内存作为header heap区域,Data heap区域初始化,从header之后初始化一块最低要求的TS Data内存区域,根据存储引擎预定义的内存块大小创建固定大小的内存管理数据结构,System heap区域位于共享内存的尾端。
主要以Free Heap区域和System heap区域来说明线程申请共享内存池中内存的过程,。
Free Heap区域是共享内存池中Free Space中的内存,Free Heap区域中利用前缀树表示内存块span与page映射关系,可参考图2,page为共享内存池最小内存申请单位,比如4K或8K,
Free Heap区域的工作流程中,当通过Free Heap区域接收线程申请,表示所述线程已向其他heap区域申请内存且相应的其他heap区域没有空闲内存,
查找Free Heap区域内符合所述线程申请内存的最小内存块,若找到符合的最小内存块,则利用最小内存块提供至其他Heap区域,以便线程获取申请的相应内存,若未找到符合的最小内存块,则通过共享内存池触发其他Heap区域的GC流程,将其他Heap区域经GC流程释放的空闲内存存入Free Heap区域,以便获得符合的最小内存块,进一步地,可参考图3,具体步骤为:
通过Free Heap区域接收线程申请;
利用前缀树查找Free Heap区域内符合所述线程申请内存的最小内存块,若找到符合的最小内存块,则从最小内存块切割出线程申请的相应内存;
若未找到符合的最小内存块,则通过共享内存池触发其他Heap区域的GC流程,将其他Heap区域经GC流程释放的空闲内存存入Free Heap区域,利用前缀树判断Free Heap区域内相邻的page是否存在空闲的内存块,若存在则合并所述空闲内存和空闲的内存块组成新内存块,并将新的page与内存块的映射关系存入前缀树,若不存在则直接将空闲内存存入Free Heap区域的内存块,
重新查找Free Heap区域符合所述线程申请内存的最小内存块,若找到符合的最小内存块,则从最小内存块切割出线程申请的相应内存,若未找到符合的最小内存块则返回错误。
System heap区域,主要保存平台或系统等元数据信息。比如系统模块内元数据、系统配置参数、连接信息、error stack,log/trace等,System heap区域为不确定大小但有上限的内存申请及释放区域,相比于Common Heap区域普通的数据,元数据的修改频次较低,System Heap内存块的申请与释放次数较低。
System Heap的内存块采用Central cache结构,其中线程都有一个线程缓存thread cache,所有线程共享一个central cache,central cache结构主要是若干固定大小的链表freelist构成的数组,最大不超过256K,最小为8字节,Central cache中freelist采用lockfree的方式保证线程安全,提高并发效率。
System Heap区域的工作流程中,通过System Heap区域接收线程申请,判断线程申请内存的大小,若大于设定值256K则报错,
若小于设定值256K则根据线程申请内存的大小在Central cache中查找符合其内存大小要求的链表freelist,若Central cache中找到符合的链表freelist则返回相应内存提供给线程,若Central cache中未找到符合的链表freelist则向Free Heap区域查看是否存在空闲的内存块,以便提供给线程。进一步地,向Free Heap区域查看是否存在空闲的内存块,包括:
查看Free Heap区域内是否存在符合线程申请的内存块,如果没有则返回错误,否则按照线程申请内存的大小向上取整获取到相应的page数量,将page数量对应的内存块放入central cache中,线程会从central cache中申请到该内存块,完成了内存申请。
本发明还提供一种共享内存池实现系统,包括共享内存池管理模块,
所述共享内存池管理模块向操作系统申请内存,作为共享内存池,将所述共享内存池划分为不同heap区域,利用不同heap区域提供不同大小的内存块进行内存存储及使用,
所述heap区域依次包括Header Heap区域、Data Heap区域、Free Heap区域、Common Heap区域及System Heap区域,
通过Header Heap区域保存数据库与共享内存的头信息,
通过Data Heap区域保存数据库的数据,Data Heap区域的内存块大小固定,
通过Common Heap区域供临时数据运算或通信使用,Common Heap区域的内存块大小不固定,
通过System Heap区域保存元数据,
通过Free Heap区域动态划拨本区域的内存块代替其他没有空闲内存的heap区域提供内存存储及使用。
上述系统内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
同样地,本发明系统划分共享内存池为不同heap区域,利用不同heap区域提供不同大小的内存块进行内存存储及使用,针对静态数据,利用Header heap区域存储头信息,针对数据库数据利用Data heap区域存储,针对临时数据使用利用Common heap区域存储,针对元数据信息。利用System heap区域存储,而Free Heap区域放置内存池的空闲内存,划拨本区域的内存块至其他没有空闲内存的heap区域,以便其他Heap区域提供内存存储及使用。本发明方法不仅能够减少线程向操作系统申请内存的次数,对于大量线程的情况下性能有极大的提高,同时对特定的数据进行了特定的内存分配方式,也可以减少申请内存的时间。
本发明还提供一种共享内存池实现装置,包括至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行所述的一种共享内存池实现方法。
上述装置内的处理器的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
同样地,本发明装置划分共享内存池为不同heap区域,利用不同heap区域提供不同大小的内存块进行内存存储及使用,针对静态数据,利用Header heap区域存储头信息,针对数据库数据利用Data heap区域存储,针对临时数据使用利用Common heap区域存储,针对元数据信息。利用System heap区域存储,而Free Heap区域放置内存池的空闲内存,划拨本区域的内存块至其他没有空闲内存的heap区域,以便其他Heap区域提供内存存储及使用。本发明方法不仅能够减少线程向操作系统申请内存的次数,对于大量线程的情况下性能有极大的提高,同时对特定的数据进行了特定的内存分配方式,也可以减少申请内存的时间。
需要说明的是,上述各流程和各系统结构中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
Claims (10)
1.一种共享内存池实现方法,其特征是向操作系统申请内存,作为共享内存池,将所述共享内存池划分为不同heap区域,利用不同heap区域提供不同大小的内存块进行内存存储及使用,
所述heap区域依次包括Header Heap区域、Data Heap区域、Free Heap区域、CommonHeap区域及System Heap区域,
通过Header Heap区域保存数据库与共享内存的头信息,
通过Data Heap区域保存数据库的数据,Data Heap区域的内存块大小固定,
通过Common Heap区域供临时数据运算或通信使用,Common Heap区域的内存块大小不固定,
通过System Heap区域保存元数据,
通过Free Heap区域动态划拨本区域的内存块至其他没有空闲内存的heap区域,以便其他Heap区域提供内存存储及使用。
2.根据权利要求1所述的一种共享内存池实现方法,其特征是通过Free Heap区域接收线程申请,表示所述线程已向其他heap区域申请内存且相应的其他heap区域没有空闲内存,
查找Free Heap区域内符合所述线程申请内存的最小内存块,若找到符合的最小内存块,则利用最小内存块提供至其他Heap区域,以便线程获取申请的相应内存,若未找到符合的最小内存块,则通过共享内存池触发其他Heap区域的GC流程,将其他Heap区域经GC流程释放的空闲内存存入Free Heap区域,以便获得符合的最小内存块。
3.根据权利要求2所述的一种共享内存池实现方法,其特征是所述查找,包括:利用反映内存块与page映射关系的前缀树查找Free Heap区域内符合所述线程申请内存的最小内存块,所述page为共享内存池中heap区域的最小内存申请单位。
4.根据权利要求2或3所述的一种共享内存池实现方法,其特征是所述利用最小内存块提供至其他Heap区域,以便线程获取申请的相应内存,包括:
获取所述最小内存块,切割最小内存块获得线程申请的相应内存并提供给相应的其他Heap区域。
5.根据权利要求2所述的一种共享内存池实现方法,其特征是所述将其他Heap区域经GC流程释放的空闲内存存入Free Heap区域,包括:
获取所述空闲内存,根据前缀树判断Free Heap区域内相邻的page是否存在空闲的内存块,若存在则合并所述空闲内存和空闲的内存块组成新内存块,并将新的page与内存块的映射关系存入前缀树。
6.根据权利要求2所述的一种共享内存池实现方法,其特征是具体步骤为:
通过Free Heap区域接收线程申请;
利用前缀树查找Free Heap区域内符合所述线程申请内存的最小内存块,
若找到符合的最小内存块,则从最小内存块切割出线程申请的相应内存;
若未找到符合的最小内存块,则通过共享内存池触发其他Heap区域的GC流程,将其他Heap区域经GC流程释放的空闲内存存入Free Heap区域,利用前缀树判断Free Heap区域内相邻的page是否存在空闲的内存块,若存在则合并所述空闲内存和空闲的内存块组成新内存块,并将新的page与内存块的映射关系存入前缀树,若不存在则直接将空闲内存存入Free Heap区域的内存块,
重新查找Free Heap区域符合所述线程申请内存的最小内存块,若找到符合的最小内存块,则从最小内存块切割出线程申请的相应内存,若未找到符合的最小内存块则返回错误。
7.根据权利要求1所述的一种共享内存池实现方法,其特征是通过System Heap区域接收线程申请,判断线程申请内存的大小,若大于设定值则报错,
若小于设定值则根据线程申请内存的大小查找System Heap区域内符合线程申请的内存块,所述内存块为Central cache,所述Central cache被线程共享,若Central cache中找到符合的内存块则返回相应内存块提供给线程,若Central cache中未找到符合的内存块则向Free Heap区域查看是否存在空闲的内存块,以便提供给线程。
8.根据权利要求7所述的一种共享内存池实现方法,其特征是所述向Free Heap区域查看是否存在空闲的内存块,包括:
查看Free Heap区域内是否存在符合线程申请的内存块,如果没有则返回错误,否则按照线程申请内存的大小向上取整获取到相应的page数,将所述page对应的内存块放入central cache中,提供给线程申请的内存。
9.一种共享内存池实现系统,其特征是包括共享内存池管理模块,
所述共享内存池管理模块向操作系统申请内存,作为共享内存池,将所述共享内存池划分为不同heap区域,利用不同heap区域提供不同大小的内存块进行内存存储及使用,
所述heap区域依次包括Header Heap区域、Data Heap区域、Free Heap区域、CommonHeap区域及System Heap区域,
通过Header Heap区域保存数据库与共享内存的头信息,
通过Data Heap区域保存数据库的数据,Data Heap区域的内存块大小固定,
通过Common Heap区域供临时数据运算或通信使用,Common Heap区域的内存块大小不固定,
通过System Heap区域保存元数据,
通过Free Heap区域动态划拨本区域的内存块代替其他没有空闲内存的heap区域提供内存存储及使用。
10.一种共享内存池实现装置,其特征是包括至少一个存储器和至少一个处理器;
所述至少一个存储器,用于存储机器可读程序;
所述至少一个处理器,用于调用所述机器可读程序,执行权利要求1至8中任一项所述的一种共享内存池实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211206076.0A CN115599542A (zh) | 2022-09-30 | 2022-09-30 | 一种共享内存池实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211206076.0A CN115599542A (zh) | 2022-09-30 | 2022-09-30 | 一种共享内存池实现方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115599542A true CN115599542A (zh) | 2023-01-13 |
Family
ID=84844121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211206076.0A Pending CN115599542A (zh) | 2022-09-30 | 2022-09-30 | 一种共享内存池实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599542A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116069530A (zh) * | 2023-04-03 | 2023-05-05 | 中国人民解放军国防科技大学 | 基于内存池的仿真引擎数据共享黑板系统 |
-
2022
- 2022-09-30 CN CN202211206076.0A patent/CN115599542A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116069530A (zh) * | 2023-04-03 | 2023-05-05 | 中国人民解放军国防科技大学 | 基于内存池的仿真引擎数据共享黑板系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10949342B2 (en) | Persistent memory garbage collection | |
US9430388B2 (en) | Scheduler, multi-core processor system, and scheduling method | |
US6470436B1 (en) | Eliminating memory fragmentation and garbage collection from the process of managing dynamically allocated memory | |
US7587566B2 (en) | Realtime memory management via locking realtime threads and related data structures | |
US7809918B1 (en) | Method, apparatus, and computer-readable medium for providing physical memory management functions | |
CN105917319A (zh) | 存储器单元和方法 | |
CN110727517A (zh) | 一种基于分区设计的内存分配方法和装置 | |
CN114153785B (zh) | 基于远程直接内存访问的内存管理方法和设备 | |
CN114138776A (zh) | 图结构和图属性分离设计的方法、系统、装置和介质 | |
CN115599542A (zh) | 一种共享内存池实现方法及系统 | |
US20180239550A1 (en) | Optimizable Heap for Embedded and Similar Systems with Enhanced Debugging and Self-Healing | |
CN115617504A (zh) | 一种内存管理系统、泄露检测方法及存储介质 | |
CN117311997B (zh) | 一种计算芯片的内存管理方法、装置及计算芯片 | |
CN115793957A (zh) | 写数据的方法、装置及计算机存储介质 | |
US6839822B2 (en) | Memory-block coalescing based on run-time demand monitoring | |
CN113961302A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN114116189A (zh) | 任务处理的方法、装置和计算设备 | |
CN116225693A (zh) | 元数据管理方法、装置、计算机设备及存储介质 | |
CN110162483B (zh) | 静态内存碎片整理方法、装置、计算机设备及存储介质 | |
CN115757421A (zh) | 数据处理系统和方法 | |
CN110825732A (zh) | 数据查询方法、装置、计算机设备和可读存储介质 | |
CN115509741A (zh) | 一种内存管理系统、越界检测方法及存储介质 | |
US10282301B2 (en) | Method and system for hardware accelerated read-ahead caching | |
CN112817749A (zh) | 应用于嵌入式系统的存储分区方法、装置及存储介质 | |
CN101055543A (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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240801 Address after: Room 305-22, Building 2, No. 1158 Zhangdong Road and No. 1059 Dangui Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 200120 Applicant after: Shanghai Yunxi Technology Co.,Ltd. Country or region after: China Address before: 250100 Ji'nan hi tech Zone No. 2877, Shandong Province Applicant before: INSPUR SOFTWARE GROUP Co.,Ltd. Country or region before: China |