CN116089321A - 内存管理方法、装置、电子装置和存储介质 - Google Patents
内存管理方法、装置、电子装置和存储介质 Download PDFInfo
- Publication number
- CN116089321A CN116089321A CN202211705490.6A CN202211705490A CN116089321A CN 116089321 A CN116089321 A CN 116089321A CN 202211705490 A CN202211705490 A CN 202211705490A CN 116089321 A CN116089321 A CN 116089321A
- Authority
- CN
- China
- Prior art keywords
- memory
- linked list
- block
- address
- capacity
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced 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/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/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/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System (AREA)
Abstract
本申请涉及一种内存管理方法、装置、电子装置和存储介质,其中,该方法包括:检测生产者的当前的第一内存申请请求,响应于检测到的当前的第一内存申请请求,获取对应的申请内存容量,以及第一空闲内存链表中第一待使用内存块对应的当前地址,并根据当前地址使用第一待使用内存块;根据申请内存容量确定待使用内存块的内存地址偏移量,并根据当前地址和内存地址偏移量,获取第一空闲内存链表中新的第一待使用内存块对应的新的地址;响应于检测到的下一个第一内存申请请求,根据新的地址使用第一待使用内存块。通过本申请,解决了内存管理过程中容易浪费内存空间的问题,实现了高效、精确的内存管理方法。
Description
技术领域
本申请涉及内存管理技术领域,特别是涉及内存管理方法、装置、电子装置和存储介质。
背景技术
在计算机技术中,通常都要用到缓存技术,比如计算的中间结果来不及被及时处理,都要利用内存进行临时存储。在相关技术中,内存管理一般是将内存区域划分为不同大小的内存块区,待申请内存时查找最接近大小的已划分内存块将此内存地址返回,若适合此大小的内存块以备用完则重新申请或将较大块的内存块分裂成几个较小块的内存使用。然而,上述方法在频繁申请不同大小的内存时,由于内存管理器返回的大小总是大于实际使用的内存大小,将会造成很多未利用的内存空洞,即内存碎片,从而导致内存空间容易被浪费。
目前针对相关技术中内存管理过程中容易浪费内存空间的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种内存管理方法、装置、电子装置和存储介质,以至少解决相关技术中内存管理过程中容易浪费内存空间的问题。
第一方面,本申请实施例提供了一种内存管理方法,所述方法包括:
检测生产者的当前的第一内存申请请求;
响应于检测到的所述当前的第一内存申请请求,获取对应的申请内存容量,以及第一空闲内存链表中第一待使用内存块对应的当前地址,并根据所述当前地址使用所述第一待使用内存块;
根据所述申请内存容量确定所述第一待使用内存块的内存地址偏移量,并根据所述当前地址和所述内存地址偏移量,获取所述第一空闲内存链表中所述第一待使用内存块对应的新的地址;
检测所述生产者的下一个第一内存申请请求;响应于检测到的所述下一个第一内存申请请求,根据所述新的地址使用所述第一待使用内存块。
在其中一些实施例中,所述方法还包括:
根据所述当前地址和所述内存地址偏移量,删除所述第一空闲内存链表中的所述第一待使用内存块,以及在第一使用内存链表中新增第一已使用内存块。
在其中一些实施例中,所述获取对应的申请内存容量之后,所述方法还包括:
在检测到所述申请内存容量小于或等于预设容量值的情况下,获取所述第一空闲内存链表中的当前地址,并根据所述当前地址使用所述当前的待使用内存块;
在检测到所述申请内存容量大于所述预设容量值的情况下,获取第二空闲内存链表中第二待使用内存块对应的待使用内存容量和当前地址;
根据所述申请内存容量和所述待使用内存容量使用所述第二待使用内存块,并根据所述第二待使用内存块的当前地址删除所述第二空闲内存链表中的所述第二待使用内存块,以及在第二使用内存链表中新增第二已使用内存块;
其中,所述第二空闲内存链表的内存容量大于所述第一空闲内存链表的内存容量,且所述第二使用内存链表的内存容量大于所述第一使用内存链表的内存容量。
在其中一些实施例中,所述方法还包括:
检测消费者的第一内存释放请求,并响应于检测到的所述第一内存释放请求,将所述第一内存释放请求对应的内存池发送至预设的内存池缓存链表中进行缓存;
检测所述内存池缓存链表对应的内存池释放请求;
响应于检测到的所述内存池释放请求,在检测到所述第一空闲内存链表中的内存块数大于预设内存块数的情况下,对所述第一空闲内存链表和所述第一使用内存链表进行重置操作,并生成新的第一空闲内存链表和新的第一使用内存链表;
依据所述内存池释放请求,对所述第二空闲内存链表和所述的第二使用内存链表进行重置操作,并生成新的第二空闲内存链表和新的第二使用内存链表。
在其中一些实施例中,所述方法还包括:
获取预设的中心内存块位图;
依据所述申请内存容量生成内存池对应的第二内存申请请求,并依据所述第二内存申请请求,对所述中心内存块位图进行检索处理;其中,所述内存池包括所述第一空闲内存链表;
在检索到所述中心内存块位图中存在连续待使用内存区域的情况下,根据所述连续待使用内存区域将对应的内存块分配至所述内存池;
在检索所述连续待使用内存区域失败的情况下,获取新的中心内存块位图,并对所述新的中心内存块位图进行检索处理,直至将对应的内存块分配至所述内存池。
在其中一些实施例中,所述方法还包括:
检测所述内存池的第二内存释放请求;其中,所述第二内存释放请求包括待释放内存地址和待释放内存容量;
响应于检测到的所述第二内存释放请求,根据所述待释放内存地址确定待释放中心内存块,并根据所述待释放内存容量确定所述待释放中心内存块在所述中心内存块位图中对应的待释放地址偏移量;
根据所述待释放地址偏移量对所述中心内存块位图进行置零操作,得到新的中心内存位图,并根据所述新的中心内存位图对所述待释放中心内存块进行释放操作。
在其中一些实施例中,所述方法还包括:
获取所述生产者发送的私有内存池申请请求,并依据所述私有内存池申请请求,检测预设的内存池缓存链表中是否存在未使用的内存池;
若检测到存在所述未使用的内存池,则将所述内存池分配至所述生产者;若检测到所述未使用的内存池缺失,则获取经所述内存池缓存链表创建的新的内存池,并将所述新的内存池分配至所述生产者。
第二方面,本申请实施例提供了一种内存管理装置,所述装置包括:检测模块、第一使用模块、地址偏移模块和第二使用模块;
所述检测模块,用于检测生产者的当前的第一内存申请请求;
所述第一使用模块,用于响应于检测到的所述当前的第一内存申请请求,获取对应的申请内存容量,以及第一空闲内存链表中第一待使用内存块对应的当前地址,并根据所述当前地址使用所述第一待使用内存块;
所述地址偏移模块,用于根根据所述申请内存容量确定所述第一待使用内存块的内存地址偏移量,并根据所述当前地址和所述内存地址偏移量,获取所述第一空闲内存链表中所述第一待使用内存块对应的新的地址;
所述第二使用模块,用于检测所述生产者的下一个第一内存申请请求;响应于检测到的所述下一个第一内存申请请求,根据所述新的地址使用所述第一待使用内存块。
第三方面,本申请实施例提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的内存管理方法。
第四方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的内存管理方法。
相比于相关技术,本申请实施例提供的内存管理方法、装置、电子装置和存储介质,通过检测生产者的当前的第一内存申请请求,响应于检测到的当前的第一内存申请请求,获取对应的申请内存容量,以及第一空闲内存链表中第一待使用内存块对应的当前地址,并根据当前地址使用第一待使用内存块;根据申请内存容量确定待使用内存块的内存地址偏移量,并根据当前地址和内存地址偏移量,获取第一空闲内存链表中新的第一待使用内存块对应的新的地址;检测生产者的下一个第一内存申请请求;响应于检测到的下一个第一内存申请请求,根据新的地址使用第一待使用内存块,因此能够根据申请内存容量大小灵活确定待使用内存块的大小,避免了相关技术中将内存划分为多个固定大小的内存块所产生的内存碎片,有效提升了内存的利用率,从而解决了内存管理过程中容易浪费内存空间的问题,实现了高效、精确的内存管理方法。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种内存管理方法的应用环境图;
图2是根据本申请实施例的一种内存管理方法的流程图;
图3是根据本申请实施例的一种内存池内存申请方法的流程图;
图4是根据本申请优选实施例的一种内存管理方法的架构示意图;
图5是根据本申请实施例的一种内存管理装置的结构框图;
图6是根据本申请实施例的一种计算机设备内部的结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一
个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申5请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖
不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单
元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理0的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本
申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、
“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
5本申请实施例提供的内存管理方法,可以应用于如图1所示的应用环境中。
其中,终端设备102通过网络与服务器设备104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器设备104上,也可以放在云上或其他网络服务器上。生产者可以向终端设备102发送第一内存
申请请求,并经由终端设备102将该第一内存申请请求传输至服务器设备104。0服务器设备104依据当前的第一内存申请请求,获取对应的申请内存容量,以及第一内存空闲链表中当前的第一待使用内存块对应的当前地址,格努该当前地址使用当前的第一待使用内存块;服务器设备104根据申请内存容量确定待使用内存块的内存地址偏移量,并根据当前地址和该内存地址偏移量,获取第
一空闲内存链表汇总新的第一待使用内存块对应的新的地址;该服务器设备1045获取生产者经由终端设备102发送的下一个第一内存申请请求,依据该下一个
第一内存申请请求,根据新的地址使用该新的第一待使用内存块。其中,终端设备102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器设备104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
需要补充说明的是,本申请实施例的执行主体可以是服务器设备、操作系统、内存管理平台或者内存管理系统等,即执行主体可以是多种多样的,可以根据需要设置、使用或者变换执行主体。另外,也可以有第三方应用程序协助所述执行主体执行本实施例。
本实施例提供了一种内存管理方法,图2是根据本申请实施例的一种内存管理方法的流程图,如图2所示,该流程包括如下步骤:
步骤S210,获取生产者的当前的第一内存申请请求。
其中,上述第一内存申请请求是指由生产者发出的用于申请内存空间的请求信息。例如,该生产者可以经由上述终端设备向服务器设备上部署的内存池模块,或者直接向服务器设备上部署的中心内存管理模块发送该第一内存申请请求。可以理解的是,该生产者可以是一个,也可以是多个。
步骤S220,响应于检测到的该当前的第一内存申请请求,获取对应的申请内存容量,以及第一空闲内存链表中第一待使用内存块对应的当前地址,并根据该当前地址使用该第一待使用内存块。
步骤S230,根据该申请内存容量确定该待使用内存块的内存地址偏移量,并根据该当前地址和该内存地址偏移量,获取该第一空闲内存链表中该第一待使用内存块对应的新的地址。
在上述步骤S220至步骤S230中,在检测到上述当前的第一内存申请请求之后,可以对该当前的第一内存申请请求进行解析处理,并计算得到生产者所需的内存空间大小,即上述申请内存容量,然后依据该申请内存容量使用第一空闲内存链表中的内存块。
具体地,可以先判断该第一空闲内存链表表头的第一待使用内存块的剩余容量是否满足生产者所需申请的内存空间大小,即判断该当前的第一待使用内存块的剩余容量是否大于或等于该申请内存容量。若满足,则将该第一待使用内存块的内存地址向后偏移与该申请内存容量相同的长度,即根据该申请内存容量确定上述待使用内存块的内存地址偏移量,按照该内存偏移量将上述当前第一待使用内存块对应的当前地址向后偏移得到新的内存地址,然后返回该第一待使用内存块偏移前的内存地址至生产者,由生产者基于偏移前的内存地址使用该第一待使用内存块,向该第一待使用内存块放入所需存储的数据;同时从该第一待使用内存块的剩余容量中减去该申请内存容量,从而得到该第一待使用内存块新的剩余容量。若当前的第一待使用内存块的剩余容量不满足生产者所需申请的内存空间大小,则可以由上述内存池模块向中心内存管理模块申请4Kb内存空间,并将该4Kb内存块挂入该内存池的第一空闲内存链表,同时将该第一待使用内存块的剩余容量初始化为4Kb,然后计算满足本次申请后的剩余容量,并将该第一待使用内存块的内存地址向后偏移与该申请内存容量相同的长度,最后返回该第一待使用内存块偏移前的内存地址至生产者以供使用。
步骤S240,检测该生产者的下一个第一内存申请请求;响应于检测到的该下一个第一内存申请请求,根据该新的地址使用该第一待使用内存块。
其中,在通过上述步骤S230将上述第一空闲内存链表中当前的内存块的内存地址向后偏移与上述申请内存容量相同的长度之后,继续检测生产者的第一内存申请请求,在检测到下一个第一内存申请请求的情况下,依据该下一个内存申请请求重复上述步骤,以确定第一空闲内存链表中第一待使用内存对应的新的地址和剩余容量,并返回偏移前的内存地址至生产者以供其使用。
通过上述步骤S210至步骤S240,通过依据第一内存申请请求确定申请内存容量,并按照申请内存容量确定空闲内存链表中的待使用内存块的内存地址偏移量,从而避免了相关技术中将内存划分为多个固定大小的内存块所产生的内存碎片,有效提升了内存的利用率,解决了内存管理过程中容易浪费内存空间的问题,实现了高效、精确的内存管理方法。
下面通过优选实施例对本申请实施例进行描述和说明。图3是根据本申请实施例的一种内存池内存申请方法的流程图,如图3所示,该流程包括如下步骤:
步骤S301,获取生产者发起的第一内存申请请求。
步骤S302,依据当前的第一内存申请请求,获取对应的申请内存容量,并判断该申请内存容量是否大于4Kb。
步骤S303,若上述步骤S302的判断结果为否,则判断第一空闲内存链表表头的内存块是否满足上述申请内存容量需求。若该步骤S303的判断结果为否,则执行后续步骤S304,若该步骤S303的判断结果为是,则直接执行后续步骤S305。
步骤S304,向中心内存管理模块申请4Kb内存块,并将该4Kb内存块加入第一空闲内存链表中。
步骤S305,将该内存块剩余容量减去申请内存容量,并将该内存块起始地址向后偏移与该申请内存容量相同的长度。
步骤S306,若上述步骤S302的判断结果为是,则向中心管理模块直接申请,并将该内存块加入第一使用内存链表中。
步骤S307,返回该内存块偏移前的起始地址至生产者。
在其中一些实施例中,上述内存管理方法还包括如下步骤:根据该当前地址和该内存地址偏移量,删除该第一空闲内存链表中的该第一待使用内存块,以及在第一使用内存链表中新增第一已使用内存块。通过上述实施例,将被生产者申请使用的内存块按照当前地址和内存地址偏移量存储在上述第一使用内存链表中,以便后续消费者使用数据后归还内存块时能够快速从第一使用内存链表中释放内存,从而有利于提高内存管理效率。
在其中一些实施例中,上述内存池还包括第二空闲内存链表和第二使用内存链表;在获取对应的申请内存容量之后,上述内存管理方法还包括如下步骤:
步骤S251,在检测到该申请内存容量小于或等于预设容量值的情况下,获取该第一空闲内存链表中的当前地址,并根据该当前地址使用该当前的待使用内存块。
其中,上述预设容量值可以由工作人员预先进行设置,例如可以将该预设容量值预先设置为4Kb,即在Linux操作系统下的最小内存操作单位。则当检测到上述申请内存容量小于或等于该预设容量值时,说明此时生产者所需申请的内存空间较小,因此可以通过上述步骤S251或上述步骤S220至步骤S230,返回第一空闲内存链表表头空闲的待使用内存块的当前地址以进行使用,并将该待使用内存块的地址向后偏移与该申请内存容量相同的长度,得到新的内存地址以及该待使用内存块新的剩余容量。
步骤S252,在检测到该申请内存容量大于该预设容量值的情况下,获取第二空闲内存链表中第二待使用内存块对应的待使用内存容量和当前地址。
步骤S253,根据该申请内存容量和该待使用内存容量使用该第二待使用内存块,并根据该第二待使用内存块的当前地址删除该第二空闲内存链表中的该第二待使用内存块,以及在第二使用内存链表中新增第二已使用内存块。
其中,该第二空闲内存链表的内存容量大于该第一空闲内存链表的内存容量,且该第二使用内存链表的内存容量大于该第一使用内存链表的内存容量。例如,该第一空闲内存链表、该第一使用内存链表中存储的可以是内存空间值小于或等于4Kb的内存块,该第二空闲内存链表、该第二使用内存链表中存储的可以是内存空间值大于4Kb的内存块。
在上述步骤S252至步骤S253中,在每次生产者向内存池申请内存时,检测申请内存容量和预设容量值之间的比较结果。若申请的内存空间值大于该预设容量值,则说明此时生产者所需申请的内存空间较大,因此可以向第二空闲内存链表中查找是否有与申请内存容量大小一致的内存块,若未查找到满足申请内存容量需求的内存块,则向中心内存管理模块申请该申请内存容量大小的内存块以供生产者使用,并将该内存块加入到第二使用内存链表中。若从该第二空闲内存链表中查找到满足申请内存容量需求,即待使用内存容量大于或等于该申请内存容量的第二待使用内存块,则将该第二待使用内存块对应的当前地址返回至生产者,并将该第二待使用内存块从第二空闲内存链表中删除,并加入到第二使用内存链表中。
在相关技术中,通常将大内存块不断切分成小内存块来使用,同时再继续申请大内存块时申请不到,需要额外开辟另外一块大内存块,从而到导致易产生内存碎片,内存的利用率较低。而本申请通过上述步骤S251至步骤S253,在内存池中划分内存空间较小的第一空闲内存链表、第一使用内存链表,以及内存空间较大的第二空闲内存链表、第二使用内存链表,使得在申请内存容量较
小时可以从第一空闲内存链表中取出与申请内存容量相匹配的内存空间,在申5请内存容量较大时从第二空闲内存链表中取出整块大内存空间,从而有效避免
了原大内存块不断被切分导致的内存碎片,进一步提高了内存的利用率。
在其中一些实施例中,上述内存管理方法还包括如下步骤:
步骤S261,检测消费者的第一内存释放请求,并响应于检测到的该第一内存释放请求,将该第一内存释放请求对应的内存池发送至预设的内存池缓存链0表中进行缓存。
其中,上述第一内存释放请求是指由消费者发出的用于释放内存空间的请求信息。则该消费者在处理完生产者的内存数据后,可以将该内存数据关联的内存池归还给用于缓存内存池的部署于上述服务器设备的内存池链表管理模块;
其中,该内存池链表管理模块用于管理内存池缓存链表。可以理解的是,该消5费者可以是一个,也可以是多个。
步骤S262,检测所述内存池缓存链表对应的内存池释放请求。
例如,当通过上述内存池链表管理模块检测到上述内存池缓存链表中缓存的内存池个数大于一定阈值时,可以由该内存池链表管理模块对应生成内存池
释放请求,并由上述服务器设备检测到。例如,内存池链表管理模块在有消费0者归还内存池时,查询当前管理的缓存内存池个数,若大于设定的一定阈值,
则可以将其维护的一般缓存内存池销毁,销毁的内存池可以通过后续步骤被重置以将其所管理的内存块都归还至上述中心内存管理模块。
步骤S263,响应于检测到的该内存池释放请求,在检测到该第一空闲内存链表中的内存块数大于预设内存块数的情况下,对该第一空闲内存链表和该第5一使用内存链表进行重置操作,并生成新的第一空闲内存链表和新的第一使用
内存链表。
其中,响应于上述内存池释放请求,针对内存空间较小的第一空闲内存链表和第一使用内存链表进行重置操作。具体地,在重置之前先检测第一空闲内存链表中的内存块个数,若检测到该第一空闲内存链表中的内存块数大于预设内存块数时,将第一空闲内存链表管理的所有内存块归还给中心内存管理模块,然后将第一使用内存链表中的内存块删除并对应添加到第一空闲内存链表中,以生成新的第一空闲内存链表和第一使用内存链表。
步骤S263,依据该内存池释放请求,对该第二空闲内存链表和该的第二使用内存链表进行重置操作,并生成新的第二空闲内存链表和新的第二使用内存链表。
其中,响应于上述内存池释放请求,针对内存空间较大的第二空闲内存链表和第二使用内存链表进行重置操作。具体地,将该第二空闲内存链表管理的所有内存块归还至上述中心内存管理模块,并将第二使用内存链表中的所有内存块删除并对应添加到第二空闲内存链表中,以生成新的第二空闲内存链表和第二使用内存链表。可以理解的是,由于内存空间较大的内存块可以看做专属内存块,即只有申请内存容量符合该内存空间值的请求才能使用该内存块,所有重置内存池时,针对第二空闲内存链表管理的大内存空间的内存块,可以认为此次任务或者下次任务时不再需要该内存空间值的内存块,因此可以及时释放该内存空间,避免占用过多的空间内存。此外,在应用过程中针对大内存空间的内存块的使用频繁程度通常低于针对小内存空间的使用频率,因此针对占用空间过多的内存块需要及时清理,而针对第一空闲内存链表管理的小内存空间的内存块可以逐步缩减重置范围。
通过上述步骤S261至步骤S263,在消费者释放内存池时,由内存池链表管理模块将该内存池缓存起来,该内存池申请的内存可供下个消费者使用,从而避免了反复向系统申请内存,提升了内存申请效率并降低了内存碎片的风险。
在其中一些实施例中,上述内存管理方法还包括如下步骤:
步骤S271,获取预设的中心内存块位图。
其中,上述中心内存块位图是指预先生成的,与上述中心内存管理模块中的中心内存块相对应的位图表。例如,将该中心内存块按照1Kb的大小划分为多个内存区域,每个内存区域与该中心内存块对应的位图表中的1bit一一对应,对应关系通常是按照内存地址从小到大的顺序对应,每个bit置1表示对应的内存区域被使用,置0表示对应的内存区域未被使用。
步骤S272,依据该申请内存容量生成内存池对应的第二内存申请请求,并依据该第二内存申请请求,对该中心内存块位图进行检索处理;其中,该内存池包括该第一空闲内存链表。
其中,当检测到该内存池自身缓存的空闲内存不满足当前生产者所需申请的内存空间值,即该内存池的空闲内存的剩余容量小于上述申请内存容量时,生成与该内存池对应的第二内存申请请求,并可以由上述服务器设备检测到。则响应于检测到的第二内存申请请求,首先将该申请内存容量进行1Kb对齐。然后由上述中心内存管理模块遍历查找中心块,判断是否存在连续bit为0对应的空闲内存满足对齐后内存申请大小的中心内存块。
步骤S273,在检索到该中心内存块位图中存在连续待使用内存区域的情况下,根据该连续待使用内存区域将对应的内存块分配至该内存池。
具体地,在通过上述步骤S272检索到上述中心内存块位图中存在有连续bit为0的空闲内存区域,且该空闲内存区域的空间大小满足上述申请内存容量估量,即检测到该中心内存块位图中存在有对应的连续待使用内存区域后,可以在该中心内存块位图中将该连续待使用内存区域所对应的连续bit置1,并方位该连续bit对应的首内存地址至上述用于管理该内存池的内存池模块,以使得该内存池能够从上述中心内存管理模块中申请到对应空间值的内存块。
步骤S274,在检索该连续待使用内存区域失败的情况下,获取新的中心内存块位图,并对该新的中心内存块位图进行检索处理,直至将对应的内存块分配至该内存池。
具体地,在通过上述步骤S273未检测到上述连续待使用内存区域的情况下,可以由上述中心内存管理模块向当前应用的操作系统申请较大空间值的内存空间,例如可以向该操作系统申请2Mb大小的内存,并将此次申请到的中心内存块进行对齐处理加入到上述中心内存块链表中,同时建立与其对应的新的中心内存块位图,且将该中心内存块位图初始化为0;然后,将该新的中心内存块位图中满足申请内存容量的连续bit位置1,并返回该连续bit对应的首内存值至上述内存池模块。
通过上述步骤S271至步骤S274,通过中心内存管理模块将中心内存块划分为固定大小的内存区域,并用位图表进行管理,从而通过位图表可合并相邻的未使用内存区域,而非像相关技术中的伙伴系统去主动查找上下游内存是否被使用再进行主动合并;同时,通过由连续小内存区域对应构成的位图表可以提高CPU内存命中率和计算效率,从而能够有效提高内存管理效率。
在其中一些实施例中,上述内存管理方法还包括如下步骤:
步骤S281,检测该内存池的第二内存释放请求;其中,该第二内存释放请求包括待释放内存地址和待释放内存容量。
其中,当内存池向上述中心内存管理模块释放内存时,不仅要向中心内存管理模块传入待释放的内存地址,还需要传入该内存的大小,即上述待释放内存容量。
步骤S282,响应于检测到的该第二内存释放请求,根据该待释放内存地址确定待释放中心内存块,并根据该待释放内存容量确定该待释放中心内存块在该中心内存块位图中对应的待释放地址偏移量。
步骤S283,根据该待释放地址偏移量对该中心内存块位图进行置零操作,得到新的中心内存位图,并根据该新的中心内存位图对该待释放中心内存块进行释放操作。
在上述步骤S282至步骤S283中,响应于上述第二内存释放请求,由中心内存管理模块通过释放的内存地址判断待释放内存块是属于其管理的哪个中心内存块,并通过该中心内存块的起始内存地址计算该内存在上述中心内存块位图中的偏移量,将该偏移后所对应释放内存大小的连续bit位置0。若该中心内存块对应的位图表都为0,则可以进一步向上述操作系统释放该中心内存块。
通过上述步骤S281至步骤S283,通过内存池向中心内存管理模块及时释放内存,能够有效提高内存的利用率,同时由于小块的内存由内存池间接管理,大块的内存由中心内存管理模块管理,避免或减少了大、小块内存多次反复申请、释放造成的内存碎片问题。
在其中一些实施例中,上述内存管理方法还包括如下步骤:
步骤S201,获取该生产者发送的私有内存池申请请求,并依据该私有内存池申请请求,检测预设的内存池缓存链表中是否存在未使用的内存池。
步骤S202,若检测到存在该未使用的内存池,则将该内存池分配至该生产者;若检测到该未使用的内存池缺失,则获取经该内存池缓存链表创建的新的内存池,并将该新的内存池分配至该生产者。
在上述步骤S201至步骤S202中,在初始阶段,可以由生产者向内存池链表管理模块申请私有内存池,并由该内存池链表管理模块查询其管理的内存池缓存链表中是否存在未使用的内存池,若检测到存在未使用的内存池,则将该内存池返回给该私有内存池申请请求对应的生产者,若未检测到未被使用的内存池,则可以创建新的内存池并范围给上述生产者。
通过上述步骤S201至步骤S202,通过检测到的生产者发起的私有内存池申请请求,将缓存链表中的内存池分配给对应生产者,使得每个生产者都有对应的私有内存池,从而避免或减少了多个生产者同时向内存管理器申请内存时的竞争现象,有利于进一步提高内存管理的效率和准确性。
下面结合实际应用场景对本申请的实施例进行详细说明,图4是根据本申请优选实施例的一种内存管理方法的架构示意图,如图4所示,该内存管理方法的系统架构主要包括内存池模块、内存池链表管理模块和唯一的中心内存管理模块。其中,内存池模块由第一空闲内存链表、第一使用内存链表、第二空闲内存链表和第二使用内存链表构成,且该内存池模块可以提供内存申请和重置的功能。内存池链表管理模块是内存池的管理者,且该内存池链表管理模块主要由内存池缓存链表组成。中心内存管理模块内部有中心内存块链表,用于维护多个中心内存块。每个中心内存块可以对应有位图表;例如,中心内存块可以按照1Kb大小被划分为多个内存区域,每个内存区域与该中心内存块对应的位图表中的1bit一一对应,对应关系可以按照内存地址从小到大顺序对应,每个bit置1表示被使用,置0表示未被使用。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种内存管理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本申请实施例的一种内存管理装置的结构框图,如图5所示,该装置包括:检测模块52、第一使用模块54、地址偏移模块56和第二使用模块58。
该检测模块52,用于检测生产者的当前的第一内存申请请求;该第一使用模块54,用于响应于检测到的该当前的第一内存申请请求,获取对应的申请内存容量,以及第一空闲内存链表中当前的第一待使用内存块对应的当前地址,并根据该当前地址使用该当前的第一待使用内存块;该地址偏移模块56,用于根据该申请内存容量确定该待使用内存块的内存地址偏移量,并根据该当前地址和该内存地址偏移量,获取该第一空闲内存链表中新的第一待使用内存块对应的新的地址;该第二使用模块58,用于检测该生产者的下一个第一内存申请请求,并响应于检测到的该下一个第一内存申请请求,根据该新的地址使用该新的第一待使用内存块。
通过上述实施例,通过第一使用模块54依据第一内存申请请求确定申请内存容量,并通过地址偏移模块56按照申请内存容量确定空闲内存链表中的待使用内存块的内存地址偏移量,从而避免了相关技术中将内存划分为多个固定大小的内存块所产生的内存碎片,有效提升了内存的利用率,解决了内存管理过程中容易浪费内存空间的问题,实现了高效、精确的内存管理方法。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
本实施例还提供了一种计算机设备,该计算机设备可以是服务器,图6是根据本申请实施例的一种计算机设备内部的结构图,如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储内存池。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述内存管理方法。
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,检测生产者的当前的第一内存申请请求。
S2,响应于检测到的该当前的第一内存申请请求,获取对应的申请内存容量,以及第一空闲内存链表中当前的第一待使用内存块对应的当前地址,并根据该当前地址使用该当前的第一待使用内存块。
S3,根据该申请内存容量确定该待使用内存块的内存地址偏移量,并根据该当前地址和该内存地址偏移量,获取该第一空闲内存链表中新的第一待使用内存块对应的新的地址。
S4,响应于检测到的该生产者的下一个第一内存申请请求,根据该新的地址使用该新的第一待使用内存块。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的内存管理方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种内存管理方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种内存管理方法,其特征在于,所述方法包括:
检测生产者的当前的第一内存申请请求;
响应于检测到的所述当前的第一内存申请请求,获取对应的申请内存容量,以及第一空闲内存链表中第一待使用内存块对应的当前地址,并根据所述当前地址使用所述第一待使用内存块;
根据所述申请内存容量确定所述第一待使用内存块的内存地址偏移量,并根据所述当前地址和所述内存地址偏移量,获取所述第一空闲内存链表中所述第一待使用内存块对应的新的地址;
检测所述生产者的下一个第一内存申请请求;响应于检测到的所述下一个第一内存申请请求,根据所述新的地址使用所述第一待使用内存块。
2.根据权利要求1所述的内存管理方法,其特征在于,所述方法还包括:
根据所述当前地址和所述内存地址偏移量,删除所述第一空闲内存链表中的所述第一待使用内存块,以及在第一使用内存链表中新增第一已使用内存块。
3.根据权利要求2所述的内存管理方法,其特征在于,所述获取对应的申请内存容量之后,所述方法还包括:
在检测到所述申请内存容量小于或等于预设容量值的情况下,获取所述第一空闲内存链表中的当前地址,并根据所述当前地址使用所述当前的待使用内存块;
在检测到所述申请内存容量大于所述预设容量值的情况下,获取第二空闲内存链表中第二待使用内存块对应的待使用内存容量和当前地址;
根据所述申请内存容量和所述待使用内存容量使用所述第二待使用内存块,并根据所述第二待使用内存块的当前地址删除所述第二空闲内存链表中的所述第二待使用内存块,以及在第二使用内存链表中新增第二已使用内存块;
其中,所述第二空闲内存链表的内存容量大于所述第一空闲内存链表的内存容量,且所述第二使用内存链表的内存容量大于所述第一使用内存链表的内存容量。
4.根据权利要求3所述的内存管理方法,其特征在于,所述方法还包括:
检测消费者的第一内存释放请求,并响应于检测到的所述第一内存释放请求,将所述第一内存释放请求对应的内存池发送至预设的内存池缓存链表中进行缓存;
检测所述内存池缓存链表对应的内存池释放请求;
响应于检测到的所述内存池释放请求,在检测到所述第一空闲内存链表中的内存块数大于预设内存块数的情况下,对所述第一空闲内存链表和所述第一使用内存链表进行重置操作,并生成新的第一空闲内存链表和新的第一使用内存链表;
依据所述内存池释放请求,对所述第二空闲内存链表和所述的第二使用内存链表进行重置操作,并生成新的第二空闲内存链表和新的第二使用内存链表。
5.根据权利要求1所述的内存管理方法,其特征在于,所述方法还包括:
获取预设的中心内存块位图;
依据所述申请内存容量生成内存池对应的第二内存申请请求,并依据所述第二内存申请请求,对所述中心内存块位图进行检索处理;其中,所述内存池包括所述第一空闲内存链表;
在检索到所述中心内存块位图中存在连续待使用内存区域的情况下,根据所述连续待使用内存区域将对应的内存块分配至所述内存池;
在检索所述连续待使用内存区域失败的情况下,获取新的中心内存块位图,并对所述新的中心内存块位图进行检索处理,直至将对应的内存块分配至所述内存池。
6.根据权利要求5所述的内存管理方法,其特征在于,所述方法还包括:
检测所述内存池的第二内存释放请求;其中,所述第二内存释放请求包括待释放内存地址和待释放内存容量;
响应于检测到的所述第二内存释放请求,根据所述待释放内存地址确定待释放中心内存块,并根据所述待释放内存容量确定所述待释放中心内存块在所述中心内存块位图中对应的待释放地址偏移量;
根据所述待释放地址偏移量对所述中心内存块位图进行置零操作,得到新的中心内存位图,并根据所述新的中心内存位图对所述待释放中心内存块进行释放操作。
7.根据权利要求1至6任一项所述的内存管理方法,其特征在于,所述方法还包括:
获取所述生产者发送的私有内存池申请请求,并依据所述私有内存池申请请求,检测预设的内存池缓存链表中是否存在未使用的内存池;
若检测到存在所述未使用的内存池,则将所述内存池分配至所述生产者;若检测到所述未使用的内存池缺失,则获取经所述内存池缓存链表创建的新的内存池,并将所述新的内存池分配至所述生产者。
8.一种内存管理装置,其特征在于,所述装置包括:检测模块、第一使用模块、地址偏移模块和第二使用模块;
所述检测模块,用于检测生产者的当前的第一内存申请请求;
所述第一使用模块,用于响应于检测到的所述当前的第一内存申请请求,获取对应的申请内存容量,以及第一空闲内存链表中第一待使用内存块对应的当前地址,并根据所述当前地址使用所述第一待使用内存块;
所述地址偏移模块,用于根根据所述申请内存容量确定所述第一待使用内存块的内存地址偏移量,并根据所述当前地址和所述内存地址偏移量,获取所述第一空闲内存链表中所述第一待使用内存块对应的新的地址;
所述第二使用模块,用于检测所述生产者的下一个第一内存申请请求;响应于检测到的所述下一个第一内存申请请求,根据所述新的地址使用所述第一待使用内存块。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至7中任一项所述的内存管理方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至7中任一项所述的内存管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211705490.6A CN116089321A (zh) | 2022-12-29 | 2022-12-29 | 内存管理方法、装置、电子装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211705490.6A CN116089321A (zh) | 2022-12-29 | 2022-12-29 | 内存管理方法、装置、电子装置和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116089321A true CN116089321A (zh) | 2023-05-09 |
Family
ID=86186270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211705490.6A Pending CN116089321A (zh) | 2022-12-29 | 2022-12-29 | 内存管理方法、装置、电子装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116089321A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116361234A (zh) * | 2023-06-02 | 2023-06-30 | 深圳中安辰鸿技术有限公司 | 内存管理方法、装置及芯片 |
CN116627855A (zh) * | 2023-07-24 | 2023-08-22 | 荣耀终端有限公司 | 内存处理方法及相关装置 |
CN117033002A (zh) * | 2023-10-09 | 2023-11-10 | 苏州元脑智能科技有限公司 | 一种内存管理方法、装置、设备及存储介质 |
CN118708502A (zh) * | 2024-08-28 | 2024-09-27 | 深圳市云希谷科技有限公司 | 一种在freeRTOS下改善heap堆使用中产生大量内存碎片的方法 |
-
2022
- 2022-12-29 CN CN202211705490.6A patent/CN116089321A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116361234A (zh) * | 2023-06-02 | 2023-06-30 | 深圳中安辰鸿技术有限公司 | 内存管理方法、装置及芯片 |
CN116361234B (zh) * | 2023-06-02 | 2023-08-08 | 深圳中安辰鸿技术有限公司 | 内存管理方法、装置及芯片 |
CN116627855A (zh) * | 2023-07-24 | 2023-08-22 | 荣耀终端有限公司 | 内存处理方法及相关装置 |
CN116627855B (zh) * | 2023-07-24 | 2023-10-31 | 荣耀终端有限公司 | 内存处理方法及相关装置 |
CN117033002A (zh) * | 2023-10-09 | 2023-11-10 | 苏州元脑智能科技有限公司 | 一种内存管理方法、装置、设备及存储介质 |
CN117033002B (zh) * | 2023-10-09 | 2024-02-09 | 苏州元脑智能科技有限公司 | 一种内存管理方法、装置、设备及存储介质 |
CN118708502A (zh) * | 2024-08-28 | 2024-09-27 | 深圳市云希谷科技有限公司 | 一种在freeRTOS下改善heap堆使用中产生大量内存碎片的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116089321A (zh) | 内存管理方法、装置、电子装置和存储介质 | |
CN110995776B (zh) | 区块链的区块分发方法、装置、计算机设备和存储介质 | |
US9940020B2 (en) | Memory management method, apparatus, and system | |
CN112579595A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN111078410A (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN113032156B (zh) | 内存分配方法和装置、电子设备和存储介质 | |
CN108965450B (zh) | 业务请求响应方法、装置、计算机设备和存储介质 | |
CN113065887B (zh) | 资源处理方法、装置、计算机设备和存储介质 | |
CN115470156A (zh) | 基于rdma的内存使用方法、系统、电子设备和存储介质 | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
CN112650729B (zh) | 一种分布式文件系统的权限管理方法、系统以及存储介质 | |
CN111708715B (zh) | 内存分配方法、内存分配装置及终端设备 | |
US10152258B1 (en) | Big block allocation of persistent main memory | |
CN116991855B (zh) | 哈希表处理方法、装置、设备、介质、控制器及固态硬盘 | |
US20210110201A1 (en) | Computing system performing image backup and image backup method | |
US10997077B2 (en) | Increasing the lookahead amount for prefetching | |
CN113849311B (zh) | 内存空间管理方法、装置、计算机设备和存储介质 | |
CN115934354A (zh) | 在线存储方法和装置 | |
CN116991800A (zh) | 文件获取系统、方法、装置、计算机设备和存储介质 | |
CN106406745A (zh) | 根据目录信息维护Cache数据一致性的方法及装置 | |
CN112395245B (zh) | 处理器的访问装置、方法及计算机设备 | |
CN113986833A (zh) | 文件合并方法、系统、计算机系统及存储介质 | |
CN112800123A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN108959517B (zh) | 文件管理方法、装置及电子设备 | |
CN117056363B (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 |