CN117591293A - 内存管理方法、装置、计算机设备及计算机可读存储介质 - Google Patents
内存管理方法、装置、计算机设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN117591293A CN117591293A CN202311663567.2A CN202311663567A CN117591293A CN 117591293 A CN117591293 A CN 117591293A CN 202311663567 A CN202311663567 A CN 202311663567A CN 117591293 A CN117591293 A CN 117591293A
- Authority
- CN
- China
- Prior art keywords
- memory
- linked list
- quota
- memory block
- idle
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 1106
- 238000007726 management method Methods 0.000 title claims abstract description 282
- 238000000034 method Methods 0.000 claims abstract description 41
- 238000004590 computer program Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 description 15
- 238000001514 detection method Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 238000013473 artificial intelligence Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 238000011895 specific detection Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/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
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请适用于内存管理领域,尤其涉及一种内存管理方法、装置、计算机设备及计算机存储介质。该方法通过一级管理结构为待执行的N个任务创建N个二级管理结构,根据二级管理结构对应的任务所需的内存配额,从二级管理结构的二级缓存链表中申请目标内存块,若从二级缓存链表中申请不到目标内存块,则从一级管理结构的一级缓存链表中申请目标内存块,将申请到的目标内存块发送给二级缓存链表,若从二级缓存链表中申请到目标内存块,则基于目标内存块执行当前轮次的任务,并在当前轮次的任务执行后,将目标内存块释放给二级缓存链表,在任务的所有轮次执行结束后,将二级缓存链表中的目标内存块释放给一级缓存链表。该方法提高了内存的分配效率。
Description
技术领域
本申请适用于内存管理领域,尤其涉及一种内存管理方法、装置、计算机设备及计算机可读存储介质。
背景技术
内存分配方法是指在应用程序执行的过程中分配或者回收存储空间的方法,内存分配是现代计算机操作***中的一个重要功能。通常操作***的内存管理方法主要是通过接口(Application Programming Interface,API)(如c语言的malloc和free)等直接申请和释放内存,在计算任务执行使用内存之前,通常先申请分配一定的内存空间留作备用,当有新的内存需求时,对预申请的内存空间进行动态分配,并建立索引结构来管理分配的内存空间,由于任务的执行每次申请的内存块大小不规律,频繁的内存申请和释放通常会产生大量的内存碎片,同时也会降低内存的分配效率,当预申请的内存空间不能满足内存申请需求时,直接向操作***进行内存申请,往往效率低下,因此,在根据需求分配不定大小的内存块的同时,如何提升内存的分配效率成为亟待解决的问题。
发明内容
有鉴于此,本申请实施例提供了一种内存管理方法、装置、计算机设备及计算机可读存储介质,以解决如何提升内存分配效率的问题。
第一方面,本申请实施例提供一种内存管理方法,所述内存管理方法包括:
基于一级管理结构为待执行的N个任务创建N个二级管理结构,N为大于零的整数;
针对任一二级管理结构,根据所述二级管理结构对应的任务在一次执行中所需的内存配额,从所述二级管理结构的二级缓存链表中申请目标内存块;
若从所述二级缓存链表中申请不到所述目标内存块,则从所述一级管理结构的一级缓存链表中申请所述目标内存块,将申请到的所述目标内存块发送给所述二级缓存链表,并返回执行所述从所述二级管理结构的二级缓存链表中申请目标内存块;
若从所述二级缓存链表中申请到所述目标内存块,则基于所述目标内存块执行当前轮次的所述任务,并在所述当前轮次的所述任务执行后,将所述目标内存块释放给所述二级缓存链表,在所述任务的所有轮次执行结束后,将所述二级缓存链表中的所述目标内存块释放给所述一级缓存链表。
第二方面,本申请实施例提供一种内存管理装置,所述内存管理装置包括:
创建模块,用于基于一级管理结构为待执行的N个任务创建N个二级管理结构,N为大于零的整数;
第一申请模块,用于针对任一二级管理结构,根据所述二级管理结构对应的任务在一次执行中所需的内存配额,从所述二级管理结构的二级缓存链表中申请目标内存块;
第二申请模块,用于若从所述二级缓存链表中申请不到所述目标内存块,则从所述一级管理结构的一级缓存链表中申请所述目标内存块,将申请到的所述目标内存块发送给所述二级缓存链表,并返回执行所述从所述二级管理结构的二级缓存链表中申请目标内存块;
第一释放模块,用于若从所述二级缓存链表中申请到所述目标内存块,则基于所述目标内存块执行当前轮次的所述任务,并在所述当前轮次的所述任务执行后,将所述目标内存块释放给所述二级缓存链表,在所述任务的所有轮次执行结束后,将所述二级缓存链表中的所述目标内存块释放给所述一级缓存链表。
第三方面,本申请实施例提供一种计算机设备,所述计算机设备包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的内存管理方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的内存管理方法。
本申请实施例与现有技术相比存在的有益效果是:本申请通过基于一级管理结构为每个待执行的任务创建对应的二级管理结构,从二级管理结构的二级缓存链表中申请目标内存块,若二级缓存链表中申请不到目标内存块,则从一级管理结构的一级缓存链表中申请目标内存块,将申请到的目标内存块发送给二级缓存链表,返回执行从二级管理结构的二级缓存链表中申请目标内存块,若二级缓存链表申请到目标内存块,则基于目标内存执行当前轮次的任务,在当前轮次的任务执行后,将目标内存块释放给二级缓存链表,在任务的所有轮次执行结束后,将二级缓存链表中的目标内存块释放给一级缓存链表。其中,通过建立两级内存管理结构,针对任一待执行的任务,为每个待执行的任务创建一对应的二级管理结构,用于对待执行任务的内存的分配和释放进行管理,并由一级管理结构对每个待执行任务对应的二级管理结构进行内存的分配和释放管理,提高了内存的申请和释放效率,在当前轮次的任务执行后,将目标内存块释放给二级管理结构的二级缓存链表,若当前轮次任务所释放的目标内存块能够满足该任务的其他轮次任务执行所需的内存配额的需求,则可以直接分配当前轮次任务释放的目标内存块给其他轮次任务,而无需进行目标内存块的重新申请,提高了内存的分配效率,在任务的所有轮次执行结束后,将二级管理结构的二级缓存链表中的目标内存块释放给一级管理结构的一级缓存链表,释放给一级缓存链表的目标内存块可重新分配给其他任务的二级管理结构,提高了多任务并发场景下内存的利用率和分配效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例一提供的一种内存管理方法的一应用环境示意图;
图2是本申请实施例二提供的一种内存管理方法的流程示意图;
图3是本申请实施例三提供的一种内存管理方法的流程示意图;
图4是本申请实施例四提供的一种内存管理方法的流程示意图;
图5是本申请实施例五提供的一种内存管理方法的流程示意图;
图6是本申请实施例六提供的一种内存管理方法的流程示意图;
图7是本申请实施例七提供的一种内存管理方法的流程示意图;
图8是本申请实施例八提供的一种内存管理方法的流程示意图;
图9是本申请实施例九提供的一种内存管理装置的结构示意图;
图10是本申请实施例十提供的一种计算机设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定***结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的***、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互***、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
应理解,以下实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
为了说明本申请的技术方案,下面通过具体实施例来进行说明。
本申请实施例一提供的一种内存管理方法,可应用在如图1的应用环境中,其中,用户操作计算机设备,对计算机设备内部的内存进行内存管理服务,计算机设备包括但不限于掌上电脑、桌上型计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本、云端计算机设备、个人数字助理(personal digital assistant,PDA)等设备,计算机设备内部的内存包括但不限于***内存、应用内存、缓存内存和持久性内存等内存。
参见图2,是本申请实施例二提供的一种内存管理方法的流程示意图,上述内存管理方法应用于图1中的计算机设备中,其中,该计算机设备包括任一***的***内存,该***在执行相应的任务时从***内存中调出相应的内存来支撑任务的运行。如图2所示,内存管理方法可以包括以下步骤:
步骤S201,基于一级管理结构为待执行的N个任务创建N个二级管理结构,N为大于零的整数。
本申请实施例中,待执行的任务可以是指需要被执行的计算任务,该任务可以是来自用户提交的作业、应用程序的运行和***服务的执行等,在***内存中设置了两级缓存管理结构,其中,一级管理结构可以为负责N个待执行任务的全局内存管理的管理结构,包括待执行的N个任务的内存的分配和释放管理,并负责协调和管理所有任务对应的二级管理结构的内存使用情况,一级管理结构为每个独立的计算任务创建一个二级管理结构,二级管理结构可以为负责每个待执行任务对应的内存管理的管理结构,包括每个待执行任务的内存的分配和释放管理。该一级管理结构和二级管理结构可以是一个数据结构或者类,包含用于分配和释放内存的方法,该一级管理结构还包括用于管理二级管理结构的方法,通过创建一级管理结构,以及为每个待执行任务创建对应的二级管理结构,将一级管理结构和每个待执行任务对应的二级管理结构关联起来,以使一级管理结构能够对每个待执行任务对应的二级管理结构进行内存管理,并使得每个待执行任务对应的二级管理结构可以向一级管理结构来请求内存分配和释放。
步骤S202,针对任一二级管理结构,根据二级管理结构对应的任务在一次执行中所需的内存配额,从二级管理结构的二级缓存链表中申请目标内存块。
本申请实施例中,内存配额可以是为二级管理结构对应的任务在一次执行中所预先分配的内存资源,以备任务的一次执行使用,二级缓存链表可以是二级管理结构中用于缓存内存块的数据结构,该二级缓存链表中的每个节点可以表示一个内存块,并通过指针将各个内存块链接起来,形成一个内存块缓存链表,目标内存块可以是指符合任务一次执行所需内存配额的内存块。
上述的内存配额可以是根据需求预先配置的一定大小的内存资源,也可以是通过对任务的一次执行所需内存进行评估计算得到。举例说明,通过对任务的一次执行所需内存进行评估计算得到,可以对任务的处理流程、任务需要处理的数据量、数据类型和计算复杂度等执行需求进行综合评估,来确定任务的内存配额,也可以在评估任务的执行需求的基础上,对***的可用内存大小和***硬件配置的限制等***的内存限制等进行联合评估,来确定任务的内存配额。在从二级管理结构的二级缓存链表中申请目标内存块的过程中,二级管理结构根据任务执行所需的内存配额,确定内存配额所对应的二级缓存链表,检测该内存配额对应的二级缓存链表中是否存在满足内存配额的内存块,若存在满足内存配额的内存块,则从该二级缓存链表中分配一满足内存配额的内存块作为目标内存块给对应的任务。
步骤S203,若从二级缓存链表中申请不到目标内存块,则从一级管理结构的一级缓存链表中申请目标内存块,将申请到的目标内存块发送给二级缓存链表,并返回执行从二级管理结构的二级缓存链表中申请目标内存块。
本申请实施例中,一级缓存链表是指一级管理结构中用于缓存内存块的数据结构,该一级缓存链表中的每个节点可以表示一个内存块,并通过指针将各个内存块链接起来,形成一个内存块缓存链表。
当从二级管理结构的二级缓存链表中申请不到满足内存配额的目标内存块时,二级管理结构向一级管理结构发送内存申请请求,请求从一级管理结构中的一级缓存链表中申请内存,一级管理结构在接收到二级管理结构的内存申请请求后,根据任务执行所需的内存配额,确定内存配额所对应的一级缓存链表,检测该内存配额对应的一级缓存链表中是否存在满足内存配额的内存块,若存在满足内存配额的内存块,则从一级缓存链表中分配一满足内存配额的内存块给二级管理结构,二级管理结构接收到从一级管理结构申请到的内存后,将该申请到的内存分配到二级缓存链表中,继续执行从二级管理结构的二级缓存链表中申请目标内存块。
步骤S204,若从二级缓存链表中申请到目标内存块,则基于目标内存块执行当前轮次的任务,并在当前轮次的任务执行后,将目标内存块释放给二级缓存链表,在任务的所有轮次执行结束后,将二级缓存链表中的目标内存块释放给一级缓存链表。
本申请实施例中,一个独立的任务可以被划分为多个轮次的任务来执行,每个轮次的任务代表了该独立的任务在执行过程中的一个特定的执行阶段,包括一系列的计算步骤或者操作,用于逐步实现该独立的任务的执行目标,当前轮次的任务可以是指任务中正在执行的一个特定的执行阶段,任务的所有轮次执行结束即该独立的任务的所有的迭代过程或者执行阶段都已经执行结束。
当从二级管理结构的二级缓存链表中申请到目标内存块时,基于获得的目标内存块执行当前轮次的任务,例如,当前轮次的任务的执行可以为读取目标内存块中的数据或者执行计算等,在当前轮次的任务执行结束后,可以通过将目标内存块添加到二级缓存链表的末尾或者指定位置,将目标内存块释放给二级缓存链表,在任务的所有轮次都执行结束后,通过在二级缓存链表中根据每个节点的地址或者标识符等信息,查找得到目标内存块,修改二级缓存链表中节点的连接关系,将查找到的目标内存块从二级缓存链表中移除,添加到一级管理结构的一级缓存链表的末尾或者指定位置,将二级缓存链表中的目标内存块释放给一级缓存链表,并更新一级管理结构和二级管理结构的缓存状态信息。
如图1所示,该计算机设备内部有两个待执行的任务,分别为待执行任务1和待执行任务2,一级管理结构为待执行任务1创建二级管理结构1,一级管理结构为待执行任务2创建二级管理结构2;一级管理结构里面包括一级缓存链表,二级管理结构1和二级管理结构2里面包括对应的二级缓存链表,一级缓存链表和二级缓存链表中的各个节点对象为各个内存块;一级缓存链表中的内存来源于***内存,二级缓存链表的内存均来源于一级缓存链表。针对上述待执行任务1所对应的二级管理结构1,根据待执行任务1在一次执行中所需的内存配额,在二级管理结构1的二级缓存链表中申请目标内存块,若二级缓存链表中申请不到目标内存块,则从一级管理结构的一级缓存链表中申请目标内存块,若一级缓存链表中申请不到目标内存块,则从操作***中申请目标内存块。在该图1中,对每个管理结构均可以将其中任务执行所需内存划分为大内存、小内存和Huge内存等,执行任务时可以通过向上对齐的方式找到对应规格的内存类型,其中,大内存和小内存的调用、释放等管理过程可参考下述实施例,而Huge内存不会做缓存管理,可以直接通过***调用进行申请或释放。
本申请实施例通过基于一级管理结构为每个待执行的任务创建对应的二级管理结构,从二级管理结构的二级缓存链表中申请目标内存块,若二级缓存链表中申请不到目标内存块,则从一级管理结构的一级缓存链表中申请目标内存块,将申请到的目标内存块发送给二级缓存链表,返回执行从二级管理结构的二级缓存链表中申请目标内存块,若二级缓存链表申请到目标内存块,则基于目标内存执行当前轮次的任务,在当前轮次的任务执行后,将目标内存块释放给二级缓存链表,在任务的所有轮次执行结束后,将二级缓存链表中的目标内存块释放给一级缓存链表。其中,通过建立两级内存管理结构,针对任一待执行的任务,为每个待执行的任务创建一对应的二级管理结构,用于对待执行任务的内存的分配和释放进行管理,并由一级管理结构对每个待执行任务对应的二级管理结构进行内存的分配和释放管理,提高了内存的申请和释放效率,在当前轮次的任务执行后,将目标内存块释放给二级管理结构的二级缓存链表,若当前轮次任务所释放的目标内存块能够满足该任务的其他轮次任务执行所需的内存配额的需求,则可以直接分配当前轮次任务释放的目标内存块给其他轮次任务,而无需进行目标内存块的重新申请,提高了内存的分配效率,在任务的所有轮次执行结束后,将二级管理结构的二级缓存链表中的目标内存块释放给一级管理结构的一级缓存链表,释放给一级缓存链表的目标内存块可重新分配给其他任务的二级管理结构,提高了多任务并发场景下内存的利用率和分配效率。
参见图3,为本申请实施例三提供的一种内存管理方法的流程示意图。如图3所示,在步骤S203中的若从二级缓存链表中申请不到目标内存块,则从一级管理结构的一级缓存链表中申请目标内存块,可以包括以下步骤:
步骤S301,若从二级缓存链表中申请不到目标内存块,则基于内存配额向一级管理结构申请内存,检测一级管理结构的一级缓存链表中是否存在满足内存配额的目标内存块。
步骤S302,若检测到一级缓存链表中存在满足内存配额的目标内存块,则将满足内存配额的目标内存块作为申请到的目标内存块。
本申请实施例中,若从二级缓存链表中申请不到目标内存块,则由二级管理结构根据内存配额向一级管理结构发送申请内存的请求,一级管理结构在接收到二级管理结构的内存申请请求后,根据二级管理结构所申请的内存配额,确定内存配额所对应的一级缓存链表,检测该内存配额所对应的一级缓存链表中是否存在满足内存配额的内存块,若检测到一级缓存链表中存在满足内存配额的内存块,则从一级缓存链表中分配一满足内存配额的内存块给二级管理结构,以该从一级缓存链表中分配得到的满足内存配额的内存块为目标内存块。
步骤S303,若检测到一级缓存链表中不存在满足内存配额的目标内存块,则基于内存配额向操作***申请内存。
本申请实施例中,操作***可以是指管理和控制计算机硬件与软件资源的计算机程序,例如,该操作***可以是手机操作***或者桌面操作***等,该操作***可以管理计算机的内存、处理器、硬盘等硬件资源,以及协调其他软件的运行。
若检测到一级缓存链表中不存在满足内存配额的目标内存块,则一级管理结构基于内存配额向操作***发送申请内存的请求,操作***的内存管理模块根据***的当前可用内存的情况对申请内存的请求进行评估,若操作***当前能够满足一级管理结构的申请内存配额需求,则分配内存至一级管理结构,一级管理结构接收到操作***分配的内存即为目标内存块,若操作***当前无法满足一级管理结构的申请内存配额需求,则返回内存申请失败错误至一级管理结构。
本申请实施例,若从二级缓存链表中申请不到目标内存块,则基于内存配额向一级管理结构申请内存,若一级管理结构的一级缓存链表中存在满足内存配额的目标内存块,则将满足内存配额的目标内存块作为申请到的目标内存块,若一级管理结构的一级缓存链表中不存在满足内存配额的内存块,则基于内存配额向操作***申请内存。通过以上步骤,若从二级管理结构的二级缓存链表中不存在满足内存配额的内存块,则向一级管理结构进行内存申请,无需直接向操作***进行内存申请,若一级管理结构的一级缓存链表中存在满足内存配额的内存块,则可以直接分配该满足内存配额的内存块给二级管理结构,提高了内存的分配效率,同时保证了任务的正常执行。
参见图4,为本申请实施例四提供的一种内存管理方法的流程示意图。如图4所示,二级缓存链表包括二级部分满链表,二级部分满链表中的部分满链表用于存储具有部分空闲的内存块,上述步骤S202中根据二级管理结构对应的任务在一次执行中所需的内存配额,从二级管理结构的二级缓存链表中申请目标内存块,可以包括以下步骤:
步骤S401,获取二级管理结构对应的任务在一次执行中所需的内存配额,检测内存配额是否为第一内存规格对应的类型。
本申请实施例中,第一内存规格对应的类型可以为二级管理结构中根据内存大小而划分的小内存规格类型,例如,可以根据预设第一内存规格划分范围对内存配额进行划分,将处于预设第一内存规格划分范围的内存配额确定为第一内存规格对应的类型。例如,二级管理结构对应的任务在一次执行中所需的内存配额为16B,第一内存规格划分范围为1B~1024B,内存配额16B满足第一内存规格对应的划分范围,则可以确定内存配额16B为第一内存规格对应的类型。
如图1所示,在待执行任务1所对应的二级管理结构1中,第一内存规格对应的类型(即小内存)的二级缓存链表包括二级空闲链表3、二级部分满链表1和二级部分满链表2,第二内存规格对应的类型(即大内存)的二级缓存链表包括二级空闲链表1和二级空闲链表2。若检测到内存配额为第一内存规格对应的类型,则可以在二级部分满链表1和二级部分满链表2中确定第一部分满链表,其中,任务所需内存配额为第一内存规格时,使用小内存对应的二级缓存链表。
步骤S402,若检测到内存配额为第一内存规格对应的类型,则根据内存配额从二级部分满链表中确定第一部分满链表,检测第一部分满链表中是否存在满足内存配额的内存块。
本申请实施例中,二级部分满链表可以为存储部分空闲内存块的二级缓存链表,第一部分满链表可以为满足第一规格内存对应的类型的内存配额需求的二级部分满链表。
若内存配额为第一内存规格对应的类型,在确定第一部分满链表的过程中,可以将内存配额向上对齐到最接近的二级部分满链表中缓存的内存块大小,确定内存配额向上对齐的最接近的内存块所在的二级部分满链表为第一部分满链表,例如,二级缓存链表中包括二级部分满链表L1、二级部分满链表L2和二级部分满链表L3,其中,二级部分满链表L1中所缓存的内存块大小为16B,二级部分满链表L2中所缓存的内存块大小为32B,二级部分满链表L3中所缓存的内存块大小为128B,若检测到内存配额64B为第一内存规格对应的类型,则根据内存配额向上对齐到二级部分满链表中缓存的最接近的内存块大小为128B,则可以确定内存配额64B向上对齐的最接近的内存块所在的二级部分满链表L3为第一部分满链表,检测第一部分满链表中是否存在满足内存配额的内存块,具体的检测过程可以参考上述实施例三中步骤S301至步骤S303中的内容。
步骤S403,若检测到第一部分满链表中存在满足内存配额的内存块,则从满足内存配额的内存块的空闲内存中切分出对应内存配额的子内存块,确定切分出的子内存块为目标内存块。
本申请实施例中,空闲内存可以是指满足内存配额的内存块中未被使用的内存部分,子内存块可以为对内存块进行切分后所得到的内存块。例如,在确定切分出的子内存块为目标内存块的过程中,若内存配额为64B,检测到第一部分满链表L3中存在满足内存配额64B的内存块M1,内存块M1中的空闲内存大小为120B,则从内存块M1的空闲内存120B中切分出内存配额64B对应的内存块为子内存块,确定切分出的大小为64B的子内存块为目标内存块,并更新第一部分满链表的内存分配情况。
相应地,将目标内存块释放给二级缓存链表,包括:
将目标内存块释放给第一部分满链表中对应的内存块。
若目标内存块对应的任务执行结束,则可以更新目标内存块在第一部分满链表中对应的内存块的内存分配情况,在第一部分满链表中对应的内存块的空闲内存中增加目标内存块的内存大小,将目标内存块释放给第一部分满链表中对应的内存块。
本申请实施例中,若检测到二级管理结构对应的任务在一次执行中所需的内存配额为第一内存规格对应的类型,则根据内存配额从二级部分满链表中确定第一部分满链表,若检测到第一部分满链表中存在满足内存配额的内存块,则从满足内存配额的内存块的空闲内存中切分出对应内存配额的子内存块,确定切分出的子内存块为目标内存块,并在目标内存块所对应的任务执行结束后,释放目标内存块给第一部分满链表中对应的内存块。通过以上步骤,若检测到内存配额为第一内存规格对应的类型,则确定内存配额对应的第一部分满链表,从第一部分满链表的空闲内存中切分出对应内存配额的子内存块,减少了内存碎片,提高了内存利用率,并在目标内存块对应的任务执行结束后,释放目标内存块给第一部分满链表,被释放的内存块可供任务的其他轮次的执行所使用,提高了内存的利用率。
参见图5,是本申请实施例五提供的一种内存管理方法的流程示意图,如图5所示,二级缓存链表还包括二级空闲链表,二级空闲链表中的空闲链表用于存储空闲的内存块,在上述步骤S402中检测第一部分满链表中是否存在满足内存配额的内存块之后,还可以包括以下步骤:
步骤S501,若检测到第一部分满链表中不存在满足内存配额的内存块,则检测二级空闲链表中是否存在满足内存配额的第一空闲链表。
本申请实施例中,二级空闲链表可以为存储空闲内存块的二级缓存链表,第一空闲链表可以为满足第一内存规格对应的类型的内存配额需求的二级空闲链表。
在确定第一空闲链表的过程中,可以将内存配额向上对齐到最接近的二级空闲链表中缓存的内存块大小,确定内存配额向上对其的最接近的内存块所在的二级空闲链表为第一空闲链表,也可以确定内存块大小大于或者等于内存配额的任一二级空闲链表为第一空闲链表。例如,确定内存块大小大于或者等于内存配额的任一二级空闲链表为第一空闲链表,内存配额为64B,二级缓存链表还包括二级空闲链表L1、二级空闲链表L2和二级空闲链表L3,其中,二级空闲链表L1中所缓存的内存块大小为4B,二级空闲链表L2中所缓存的内存块大小为128B,二级空闲链表L3中所缓存的内存块大小为256B,则可以确定二级空闲链表L2和二级空闲链表L3中所缓存的内存块大小均大于或者等于内存配额64B,则可以确定二级空闲链表L2或者二级空闲链表L3为第一空闲链表。
举例说明,在确定第一空闲链表的过程中,将内存配额向上对其到的最接近的二级空闲链表,该内存配额向上对齐到的最接近的二级空闲链表中所缓存的内存块大小和第一部分满链表中所缓存的内存块大小相等,若该内存配额向上对齐到的最接近的二级空闲链表中不存在满足内存配额的内存块,则检测二级空闲链表中该最接近的二级空闲链表之外的,内存块大小大于或者等于内存配额的任一二级空闲链表中是否存在满足内存配额的内存块,若检测到存在满足内存配额的内存块,则确定该满足内存配额的内存块所在的二级空闲链表为第一空闲链表,从该第一空闲链表中分配满足内存配额的内存块,此过程可以为内存块的窃取过程。
步骤S502,若检测到二级空闲链表中存在满足内存配额的第一空闲链表,则从第一空闲链表中分配满足内存配额的内存块,从分配的内存块中切分出对应内存配额的子内存块,确定切分出的子内存块为目标内存块,将切分出子内存块的内存块挂在二级部分满链表中。
例如,内存配额为64B,若检测到二级空闲链表中存在满足内存配额的第一空闲链表L3,第一空闲链表L3中所缓存的内存块大小为256B,第一空闲链表L3中存在满足内存配额64B的内存块M2,内存块M2为空闲的内存块,其大小为256B,则从内存块M2中切分出内存配额64B对应的子内存块,确定切分出的大小为64B的子内存块为目标内存块,若二级缓存链表中存在缓存的内存块大小为256B的二级部分满链表,则可以更改缓存的内存块大小为256B的二级部分满链表的指针,将切分过后的内存块M2添加到对应缓存的内存块大小为256B的二级部分满链表的任意位置,若二级缓存链表中不存在缓存的内存块大小为256B的二级部分满链表,则可以将切分过后的内存块M2添加到任一二级部分满链表中。
步骤S503,若检测到二级空闲链表中不存在满足内存配额的第一空闲链表,则确定从二级缓存链表中申请不到目标内存块,并执行从一级管理结构的一级缓存链表中申请目标内存块。
若遍历所有的二级空闲链表,检测到所有的二级空闲链表中不存在满足内存配额的第一空闲链表,确定从二级缓存链表中申请不到满足内存配额的目标内存块,则执行从一级管理结构的一级缓存链表中申请目标内存块,具体的可以参考上述实施例三中步骤S301至步骤S303中的内容。
如图1所示,若检测到第一部分满链表中不存在满足内存配额的内存块,则可以检测二级空闲链表3中是否为满足内存配额的第一空闲链表。
相应地,将目标内存块释放给二级缓存链表,包括:
将目标内存块释放给二级部分满链表中对应的内存块,并在检测到二级部分满链表中对应的内存块为完全空闲时,将二级部分满链表中对应的内存块释放给二级空闲链表。
若目标内存块对应的任务执行结束,则可以更新目标内存块在二级部分满链表中对应的内存块的分配情况,在二级部分满链表中对应的内存块的空闲内存中增加目标内存块的内存大小,将目标内存块释放给二级部分满链表中对应的内存块,在检测到二级部分满链表中对应的内存块的空闲内存大小和内存块的大小相等时,确定对应的内存块完全空闲,则将完全空闲的内存块添加到二级空闲链表中的任意位置,将二级部分满链表中完全空闲的内存块释放给二级空闲链表。
本申请实施例中,在第一部分满链表中不存在满足内存配额的内存块时,若检测到二级空闲链表中存在满足内存配额的第一空闲链表,则从第一空闲链表中分配满足内存配额的内存块,从分配的内存块中切分出对应的内存配额的子内存块,确定切分出的子内存块为目标内存块,将切分出子内存块的内存块挂在二级部分满链表中,若检测到二级空闲链表中不存在满足内存配额的第一空闲链表,则确定从二级缓存链表中申请不到目标内存块,并执行从一级管理结构的一级缓存链表中申请目标内存块。通过以上步骤,若二级部分满链表中不存在满足内存配额的内存块,若二级空闲链表中存在满足内存配额的内存块,则从二级空闲链表中分配内存块给二级部分满链表,若二级空闲链表中不存在满足内存配额的内存块,则向一级管理结构申请目标内存块,提高了内存分配的效率,并在目标内存块对应的任务执行结束时,将目标内存块释放给二级部分满链表中对应的内存块,并在二级部分满链表对应的内存块完全空闲时,将对应的内存块释放给二级空闲链表,被释放的内存块可供任务的其他轮次的执行所使用,提高了内存的利用率。
参见图6,为本申请实施例六提供的一种内存管理方法的流程示意图。如图6所示,在上述步骤S401中获取二级管理结构对应的任务在一次执行中所需的内存配额之后,还可以包括以下步骤:
步骤S601,检测内存配额是否为第二内存规格对应的类型,其中,第二内存规格大于所述第一内存规格。
本申请实施例中,第二内存规格对应的类型可以为二级管理结构中根据内存大小而划分的大内存规格类型,其中,第二内存规格大于所述第一内存规格。例如,可以根据预设第二内存规格划分范围对内存配额进行划分,将处于预设第二内存规格划分范围的内存配额确定为第二内存规格对应的类型。例如,二级管理结构对应的任务在一次执行中所需的内存配额为16KB,第二内存规格划分范围为1KB~1024KB,内存配额16KB满足第二内存规格对应的划分范围,则可以确定内存配额16B为第二内存规格对应的类型。
如图1所示,任务所需的内存配额为第二内存规格时,使用大内存对应的二级缓存链表,即可以在二级空闲链表1和二级空闲链表2中确定第二空闲链表。
步骤S602,若检测到内存配额为第二内存规格对应的类型,则检测二级空闲链表中是否存在满足内存配额的第二空闲链表。
本申请实施例中,第二空闲链表可以为满足第二内存规格对应的类型的内存配额需求的二级空闲链表。若内存配额为第二内存规格对应的类型,具体的检测二级空闲链表中是否存在满足内存配额的第二空闲链表可以参考上述实施例四中步骤S402或者上述实施例五中国步骤S501中的具体内容。
步骤S603,若检测到二级空闲链表中存在满足内存配额的第二空闲链表,则从第二空闲链表中分配满足内存配额的内存块,确定分配出的内存块为目标内存块。
例如,内存配额为64KB,若检测到二级空闲链表中存在满足内存配额的第二空闲链表L4,第二空闲链表L4中所缓存的内存块大小为256KB,第二空闲链表L4中存在满足内存配额64KB的内存块M3,内存块M3为空闲的内存块,其大小为256KB,则从第二空闲链表L4中分配内存块M3,确定分配出的内存块M3为目标内存块。
步骤S604,若检测到二级空闲链表中不存在满足内存配额的第二空闲链表,则确定从二级缓存链表中申请不到目标内存块,并执行从一级管理结构的一级缓存链表中申请目标内存块。
若遍历所有的二级空闲链表,检测到所有的二级空闲链表中不存在满足内存配额的第二空闲链表,确定从二级缓存链表中申请不到满足内存配额的目标内存块,则执行从一级管理结构的一级缓存链表中申请目标内存块,具体的可以参考上述实施例三中步骤S301至步骤S303中的内容。
相应地,将目标内存块释放给二级缓存链表,包括:
将目标内存块释放给第二空闲链表。
若目标内存块对应的任务执行结束,则可以更新目标内存块对应的第二空闲满链表中的内存分配情况,将目标内存块添加到第二空闲链表中的任意位置,将目标内存块释放给第二空闲链表。
本申请实施例中,在检测到内存配额为第二内存规格对应的类型时,若检测到二级空闲链表中存在满足内存配额的第二空闲链表,则从第二空闲链表中分配满足内存配额的内存块,确定分配出的内存块为目标内存块,若检测到二级空闲链表中不存在满足内存配额的第二空闲链表,则确定从二级缓存链表中申请不到目标内存块,并执行从一级管理结构的一级缓存链表中申请目标内存块,在目标内存块对应的任务执行结束时,将目标内存块释放给第二空闲链表。通过以上步骤,若内存配额为第二内存规格对应的类型,则直接分配第二空闲链表中的整个内存块作为目标内存块,并在目标内存块对应的任务执行结束时,释放目标内存块给第二空闲链表,提高了内存的分配和释放效率,同时,释放给第二空闲链表中的内存块可供任务的其他轮次使用,提高了内存的利用率。
参见图7,为本申请实施例七提供的一种内存管理方法的流程示意图。如图7所示,一级缓存链表包括一级空闲链表和一级部分满链表,一级部分满链表中的部分满链表用于存储具有部分空闲的内存块,一级空闲链表中的空闲链表用于存储空闲的内存块,在上述步骤S301中基于内存配额向第一管理结构申请内存,检测一级管理结构的一级缓存链表中是否存在满足内存配额的所述目标内存块,可以包括以下步骤:
步骤S701,检测内存配额是否为第三内存规格对应的类型或者第四内存规格对应的类型,其中,第三内存规格小于第四内存规格。
本申请实施例中,第三内存规格对应的类型可以为一级管理结构中根据内存大小而划分的小内存规格类型,第四内存规格对应的类型可以为一级管理结构中根据内存大小而划分的大内存规格类型,具体的检测内存配额是否为第三内存规格对应的类型或者第四内存规格对应的类型,可以参考上述实施例四中步骤S401和上述实施例六中步骤S601中的具体内容。
步骤S702,若检测到内存配额为第三内存规格对应的类型,则根据内存配额从一级部分满链表中确定第二部分满链表,在第二部分满链表中存在满足所述内存配额的内存块时,从满足内存配额的内存块的空闲内存中切分出对应内存配额的子内存块,确定切分出的子内存块为目标内存块。
本申请实施例中,一级部分满链表可以为存储部分空闲内存块的二级缓存链表,第二部分满链表可以为满足第三规格内存对应的类型的内存配额需求的一级部分满链表。具体的确定第三规格对应的类型的内存配额的目标内存块可以参考上述实施例四中步骤S402至步骤S403中的内容。
步骤S703,在第二部分满链表中不存在满足内存配额的内存块时,检测一级空闲链表中是否存在满足内存配额的第三空闲链表。
本申请实施例中,一级空闲链表可以为存储空闲内存块的一级缓存链表,第三空闲链表可以为满足第三内存规格对应的类型的内存配额需求的一级空闲链表。具体的检测一级空闲链表中是否存在满足内存配额的第三空闲链表可以参考上述实施例五中步骤S501中的内容。
步骤S704,若检测到一级空闲链表中存在满足内存配额的第三空闲链表,则从第三空闲链表中分配满足内存配额的内存块,从分配的内存块中切分出对应内存配额的子内存块,将切分出子内存块的内存块挂在一级部分满链表中,确定切分出的子内存块为一级管理结构的一级缓存链表中满足内存配额的所述目标内存块。
具体的确定切分出的子内存块为一级管理结构的一级缓存链表中满足内存配额的所述目标内存块,可以参考上述实施例五中步骤S502中的内容。
步骤S705,若检测到内存配额为第四内存规格对应的类型,则检测一级空闲链表中是否存在满足内存配额的第四空闲链表,若检测到一级空闲链表中存在满足内存配额的第四空闲链表,则从第四空闲链表中分配满足内存配额的内存块,确定分配出的内存块为一级管理结构的一级缓存链表中满足内存配额的目标内存块。
本申请实施例中,第四空闲链表可以为满足第四内存规格对应的类型的内存配额需求的一级空闲链表。具体的确定第四内存规格对应的类型的内存配额的目标内存块可以参考上述实施例六中步骤S601至步骤S603中的内容。
步骤S706,若检测到一级空闲链表中不存在满足内存配额的第三空闲链表,或者检测到一级空闲链表中不存在满足内存配额的第四空闲链表,则确定一级缓存链表中不存在满足内存配额的目标内存块。
若遍历所有的一级空闲链表,检测到一级空闲链表中不存在满足内存配额的第三空闲链表或者一级空闲链表中不存在满足内存配额的第四空闲链表,则确定一级缓存链表中不存在满足内存配额的目标内存块。
如图1所示,第三内存规格对应的类型(即小内存)的一级缓存链表包括一级空闲链表3、一级部分满链表1和一级部分满链表2,上述若检测到内存配额为第三内存规格对应的类型,则可以在一级部分满链表1和一级部分满链表2中确定第二部分满链表,若检测到第二部分满链表中不存在满足内存配额的内存块,则可以检测一级空闲链表3是否为满足内存配额的第三空闲链表。第四内存规格对应的类型(即大内存)的一级缓存链表包括一级空闲链表1和一级空闲链表2,上述若检测到内存配额为第四内存规格对应的类型,则可以在一级空闲链表1和一级空闲链表2中确定第四空闲链表。
本申请实施例中,在一级管理结构中,若检测到内存配额为第三内存规格对应的类型,则从一级部分满链表中确定第二部分满链表,在第二部分满链表中从满足内存配额的内存块的空闲内存中切分出对应内存配额的子内存块,确定切分出的子内存块为目标内存块,在第二部分满链表中不存在满足内存配额的内存块时,若检测到一级空闲链表中存在满足内存配额的第三空闲链表,则从第三空闲链表中分配满足内存配额的内存块,从分配的内存块中切分出对应内存配额的子内存块,将切分出子内存块的内存块挂在一级部分满链表中,确定切分出的子内存块为一级管理结构的一级缓存链表中满足内存配额的所述目标内存块;若检测到内存配额为第四内存规格对应的类型,若检测到一级空闲链表中存在满足内存配额的第四空闲链表,则从第四空闲链表中分配满足内存配额的内存块,确定分配出的内存块为一级管理结构的一级缓存链表中满足内存配额的目标内存块,若检测到一级空闲链表中不存在满足内存配额的第三空闲链表,或者检测到一级空闲链表中不存在满足内存配额的第四空闲链表,则确定一级缓存链表中不存在满足内存配额的目标内存块。通过以上步骤,实现了当二级管理结构中不存在满足内存配额的目标内存块时,向一级管理结构申请内存,一级管理结构根据内存配额的类型进行内存的检测和分配,提高了内存的分配管理效率。
参见图8,为本申请实施例八提供的一种内存管理方法的流程示意图。如图8所示,在上述步骤S301中基于内存配额向一级管理结构申请内存之前,还可以包括以下步骤:
步骤S801,获取二级管理结构中的二级内存总量。
本申请实施例中,二级内存总量可以为二级管理结构所管理的内存总量,可以包括二级缓存链表中已分配出去的内存总量和二级缓存链表中未分配出去的内存总量。可以通过遍历二级管理结构中所有的二级缓存链表,根据二级缓存链表中的内存块的大小和内存块的数量,得到二级管理结构中的二级内存总量。
步骤S802,检测二级内存总量是否达到第一额度,若检测二级内存总量未达到第一额度,则执行基于内存配额向一级管理结构申请内存。
本申请实施例中,第一额度可以为预设的二级管理结构管理的内存总量限制值,若二级内存总量未达到第一额度,则执行基于内存额度向一级管理结构申请内存,若二级内存总量达到第一额度,则先淘汰二级管理结构中的部分内存块,然后执行基于内存配额向一级管理结构申请内存。
相应地,在基于内存配额向操作***申请内存之前,还包括:
步骤S804,获取一级管理结构中的一级内存总量。
本申请实施例中,一级内存总量可以为一级管理结构所管理的内存总量,可以包括一级缓存链表中已分配出去的内存总量和一级缓存链表中未分配出去的内存总量。可以通过遍历一级管理结构中所有的一级缓存链表,根据一级缓存链表中的内存块的大小和内存块的数量,得到一级管理结构中的一级内存总量。
步骤S805,检测一级内存总量是否达到第二额度,若检测一级内存总量未达到第二额度,则执行基于内存配额向操作***申请内存。
本申请实施例中,第二额度可以为预设的一级管理结构管理的内存总量限制值,若一级内存总量未达到第二额度,则执行基于内存额度向操作***申请内存,若一级内存总量达到第二额度,则先淘汰一级管理结构中的部分内存块,然后执行基于内存配额向操作***申请内存。
本申请实施例中,在基于内存配额向一级管理结构申请内存之前,获取二级管理结构的二级内存总量,若检测到二级内存总量未达到第一额度,则执行基于内存配额向一级管理结构申请内存,相应地,在基于内存配额向操作***申请内存之前,获取一级管理结构中的一级内存总量,若检测一级内存总量未达到第二额度,则执行基于内存配额向操作***申请内存。通过以上步骤,对一级管理结构和二级管理结构所管理的总内存进行了限制,最大化的实现了对***内存资源的合理利用,提高了内存的利用率。
对应于上文实施例的***内存管理方法,图9示出了本申请实施例九提供的内存管理装置的结构框图,上述内存管理装置应用于图1中的计算机设备中,用户操作计算机设备,以对计算机设备内部的内存进行内存管理服务。为了便于说明,仅示出了与本申请实施例相关的部分。
参见图9,该内存管理装置包括:
创建模块91,用于基于一级管理结构为待执行的N个任务创建N个二级管理结构,N为大于零的整数;
第一申请模块92,用于针对任一二级管理结构,根据所述二级管理结构对应的任务在一次执行中所需的内存配额,从所述二级管理结构的二级缓存链表中申请目标内存块;
第二申请模块93,用于若从所述二级缓存链表中申请不到所述目标内存块,则从所述一级管理结构的一级缓存链表中申请所述目标内存块,将申请到的所述目标内存块发送给所述二级缓存链表,并返回执行所述从所述二级管理结构的二级缓存链表中申请目标内存块;
第一释放模块94,用于若从所述二级缓存链表中申请到所述目标内存块,则基于所述目标内存块执行当前轮次的所述任务,并在所述当前轮次的所述任务执行后,将所述目标内存块释放给所述二级缓存链表,在所述任务的所有轮次执行结束后,将所述二级缓存链表中的所述目标内存块释放给所述一级缓存链表。
可选的是,第二申请模块93,包括:
第三申请子模块,用于若从所述二级缓存链表中申请不到所述目标内存块,则基于所述内存配额向所述一级管理结构申请内存,检测所述一级管理结构的一级缓存链表中是否存在满足所述内存配额的所述目标内存块;
第一确定子模块,用于若检测到所述一级缓存链表中存在满足所述内存配额的所述目标内存块,则将满足所述内存配额的所述目标内存块作为申请到的所述目标内存块;
第二确定子模块,用于若检测到所述一级缓存链表中不存在满足所述内存配额的所述目标内存块,则基于所述内存配额向操作***申请内存。
可选的是,第一申请模块92,包括:
第一检测子模块,用于获取所述二级管理结构对应的任务在一次执行中所需的内存配额,检测所述内存配额是否为第一内存规格对应的类型;
第二检测子模块,用于若检测到所述内存配额为所述第一内存规格对应的类型,则根据所述内存配额从所述二级部分满链表中确定第一部分满链表,检测所述第一部分满链表中是否存在满足所述内存配额的内存块;
第三确定子模块,用于若检测到所述第一部分满链表中存在满足所述内存配额的内存块,则从满足所述内存配额的内存块的空闲内存中切分出对应所述内存配额的子内存块,确定切分出的子内存块为所述目标内存块;
第二释放子模块,用于将所述目标内存块释放给所述第一部分满链表中对应的内存块。
可选的是,第二检测子模块,还包括:
第三检测单元,用于若检测到所述第一部分满链表中不存在满足所述内存配额的内存块,则检测所述二级空闲链表中是否存在满足所述内存配额的第一空闲链表;
第四确定单元,用于若检测到所述二级空闲链表中存在满足所述内存配额的第一空闲链表,则从所述第一空闲链表中分配满足所述内存配额的内存块,从分配的内存块中切分出对应所述内存配额的子内存块,确定切分出的子内存块为目标内存块,将切分出子内存块的内存块挂在所述二级部分满链表中;
第五确定单元,用于若检测到所述二级空闲链表中不存在满足所述内存配额的第一空闲链表,则确定从所述二级缓存链表中申请不到所述目标内存块,并执行所述从所述一级管理结构的一级缓存链表中申请所述目标内存块;
第三释放单元,用于将所述目标内存块释放给所述二级部分满链表中对应的内存块,并在检测到所述二级部分满链表中对应的内存块为完全空闲时,将所述二级部分满链表中对应的内存块释放给所述二级空闲链表。
可选的是,第一检测子模块,包括:
第四检测单元,用于检测所述内存配额是否为第二内存规格对应的类型,其中,所述第二内存规格大于所述第一内存规格;
第五检测单元,用于若检测到所述内存配额为所述第二内存规格对应的类型,则检测所述二级空闲链表中是否存在满足所述内存配额的第二空闲链表;
第六确定单元,用于若检测到所述二级空闲链表中存在满足所述内存配额的第二空闲链表,则从所述第二空闲链表中分配满足所述内存配额的内存块,确定分配出的内存块为所述目标内存块;
第七确定单元,用于若检测到所述二级空闲链表中不存在满足所述内存配额的第二空闲链表,则确定从所述二级缓存链表中申请不到所述目标内存块,并执行所述从所述一级管理结构的一级缓存链表中申请所述目标内存块;
第四释放单元,用于将所述目标内存块释放给所述第二空闲链表。
可选的是,第三申请子模块,包括:
第六检测单元,用于检测所述内存配额是否为第三内存规格对应的类型或者第四内存规格对应的类型,其中,所述第三内存规格小于所述第四内存规格;
第八确定单元,用于若检测到所述内存配额为所述第三内存规格对应的类型,则根据所述内存配额从所述一级部分满链表中确定第二部分满链表,在所述第二部分满链表中存在满足所述内存配额的内存块时,从满足所述内存配额的内存块的空闲内存中切分出对应所述内存配额的子内存块,确定切分出的子内存块为目标内存块;
第七检测单元,用于在所述第二部分满链表中不存在满足所述内存配额的内存块时,检测所述一级空闲链表中是否存在满足所述内存配额的第三空闲链表;
第九确定单元,用于若检测到所述一级空闲链表中存在满足所述内存配额的第三空闲链表,则从所述第三空闲链表中分配满足所述内存配额的内存块,从分配的内存块中切分出对应所述内存配额的子内存块,将切分出子内存块的内存块挂在所述一级部分满链表中,确定切分出的子内存块为所述一级管理结构的一级缓存链表中满足所述内存配额的所述目标内存块;
第十确定单元,用于若检测到所述内存配额为所述第四内存规格对应的类型,则检测所述一级空闲链表中是否存在满足所述内存配额的第四空闲链表,若检测到所述一级空闲链表中存在满足所述内存配额的第四空闲链表,则从所述第四空闲链表中分配满足所述内存配额的内存块,确定分配出的内存块为所述一级管理结构的一级缓存链表中满足所述内存配额的所述目标内存块;
第十一确定单元,用于若检测到所述一级空闲链表中不存在满足所述内存配额的第三空闲链表,或者检测到所述一级空闲链表中不存在满足所述内存配额的第四空闲链表,则确定所述一级缓存链表中不存在满足所述内存配额的所述目标内存块。
可选的是,第三申请子模块,还包括:
第一获取单元,用于获取所述二级管理结构中的二级内存总量;
第八检测单元,用于检测所述二级内存总量是否达到第一额度,若检测所述二级内存总量未达到所述第一额度,则执行所述基于所述内存配额向一级管理结构申请内存;
第二获取单元,用于获取所述一级管理结构中的一级内存总量;
第九检测单元,用于检测所述一级内存总量是否达到第二额度,若检测所述一级内存总量未达到所述第二额度,则执行基于所述内存配额向操作***申请内存。
需要说明的是,上述模块之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
图10为本申请实施例十提供的一种计算机设备的结构示意图。如图10所示,该实施例的计算机设备包括:至少一个处理器(图10中仅示出一个)、存储器以及存储在存储器中并可在至少一个处理器上运行的计算机程序,处理器执行计算机程序时实现上述任意各个内存管理方法实施例中的步骤。
该计算机设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,图10仅仅是计算机设备的举例,并不构成对计算机设备的限定,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括网络接口、显示屏和输入装置等。
所称处理器可以是CPU,该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器包括可读存储介质、内存储器等,其中,内存储器可以是计算机设备的内存,内存储器为可读存储介质中的操作***和计算机可读指令的运行提供环境。可读存储介质可以是计算机设备的硬盘,在另一些实施例中也可以是计算机设备的外部存储设备,例如,计算机设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡、闪存卡(Flash Card)等。进一步地,存储器还可以既包括计算机设备的内部存储单元也包括外部存储设备。存储器用于存储操作***、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,该其他程序如计算机程序的程序代码等。存储器还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质至少可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
本申请实现上述实施例方法中的全部或部分流程,也可以通过一种计算机程序产品来完成,当计算机程序产品在计算机设备上运行时,使得计算机设备执行时实现可实现上述方法实施例中的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种内存管理方法,其特征在于,所述内存管理方法包括:
基于一级管理结构为待执行的N个任务创建N个二级管理结构,N为大于零的整数;
针对任一二级管理结构,根据所述二级管理结构对应的任务在一次执行中所需的内存配额,从所述二级管理结构的二级缓存链表中申请目标内存块;
若从所述二级缓存链表中申请不到所述目标内存块,则从所述一级管理结构的一级缓存链表中申请所述目标内存块,将申请到的所述目标内存块发送给所述二级缓存链表,并返回执行所述从所述二级管理结构的二级缓存链表中申请目标内存块;
若从所述二级缓存链表中申请到所述目标内存块,则基于所述目标内存块执行当前轮次的所述任务,并在所述当前轮次的所述任务执行后,将所述目标内存块释放给所述二级缓存链表,在所述任务的所有轮次执行结束后,将所述二级缓存链表中的所述目标内存块释放给所述一级缓存链表。
2.根据权利要求1所述的内存管理方法,其特征在于,所述若从所述二级缓存链表中申请不到所述目标内存块,则从所述一级管理结构的一级缓存链表中申请所述目标内存块,包括:
若从所述二级缓存链表中申请不到所述目标内存块,则基于所述内存配额向所述一级管理结构申请内存,检测所述一级管理结构的一级缓存链表中是否存在满足所述内存配额的所述目标内存块;
若检测到所述一级缓存链表中存在满足所述内存配额的所述目标内存块,则将满足所述内存配额的所述目标内存块作为申请到的所述目标内存块;或者
若检测到所述一级缓存链表中不存在满足所述内存配额的所述目标内存块,则基于所述内存配额向操作***申请内存。
3.根据权利要求1或2所述的内存管理方法,其特征在于,所述二级缓存链表包括二级部分满链表,所述二级部分满链表中的部分满链表用于存储具有部分空闲的内存块,所述根据所述二级管理结构对应的任务在一次执行中所需的内存配额,从所述二级管理结构的二级缓存链表中申请目标内存块,包括:
获取所述二级管理结构对应的任务在一次执行中所需的内存配额,检测所述内存配额是否为第一内存规格对应的类型;
若检测到所述内存配额为所述第一内存规格对应的类型,则根据所述内存配额从所述二级部分满链表中确定第一部分满链表,检测所述第一部分满链表中是否存在满足所述内存配额的内存块;
若检测到所述第一部分满链表中存在满足所述内存配额的内存块,则从满足所述内存配额的内存块的空闲内存中切分出对应所述内存配额的子内存块,确定切分出的子内存块为所述目标内存块;
相应地,所述将所述目标内存块释放给所述二级缓存链表,包括:
将所述目标内存块释放给所述第一部分满链表中对应的内存块。
4.根据权利要求3所述的内存管理方法,其特征在于,所述二级缓存链表还包括二级空闲链表,所述二级空闲链表中的空闲链表用于存储空闲的内存块,在所述检测所述第一部分满链表中是否存在满足所述内存配额的内存块之后,还包括:
若检测到所述第一部分满链表中不存在满足所述内存配额的内存块,则检测所述二级空闲链表中是否存在满足所述内存配额的第一空闲链表;
若检测到所述二级空闲链表中存在满足所述内存配额的第一空闲链表,则从所述第一空闲链表中分配满足所述内存配额的内存块,从分配的内存块中切分出对应所述内存配额的子内存块,确定切分出的子内存块为目标内存块,将切分出子内存块的内存块挂在所述二级部分满链表中;或者
若检测到所述二级空闲链表中不存在满足所述内存配额的第一空闲链表,则确定从所述二级缓存链表中申请不到所述目标内存块,并执行所述从所述一级管理结构的一级缓存链表中申请所述目标内存块;
相应地,所述将所述目标内存块释放给所述二级缓存链表,包括:
将所述目标内存块释放给所述二级部分满链表中对应的内存块,并在检测到所述二级部分满链表中对应的内存块为完全空闲时,将所述二级部分满链表中对应的内存块释放给所述二级空闲链表。
5.根据权利要求3所述的内存管理方法,其特征在于,在所述获取所述二级管理结构对应的任务在一次执行中所需的内存配额之后,包括:
检测所述内存配额是否为第二内存规格对应的类型,其中,所述第二内存规格大于所述第一内存规格;
若检测到所述内存配额为所述第二内存规格对应的类型,则检测所述二级空闲链表中是否存在满足所述内存配额的第二空闲链表;
若检测到所述二级空闲链表中存在满足所述内存配额的第二空闲链表,则从所述第二空闲链表中分配满足所述内存配额的内存块,确定分配出的内存块为所述目标内存块;
若检测到所述二级空闲链表中不存在满足所述内存配额的第二空闲链表,则确定从所述二级缓存链表中申请不到所述目标内存块,并执行所述从所述一级管理结构的一级缓存链表中申请所述目标内存块;
相应地,所述将所述目标内存块释放给所述二级缓存链表,包括:
将所述目标内存块释放给所述第二空闲链表。
6.根据权利要求2所述的内存管理方法,其特征在于,所述一级缓存链表包括一级空闲链表和一级部分满链表,所述一级部分满链表中的部分满链表用于存储具有部分空闲的内存块,所述一级空闲链表中的空闲链表用于存储空闲的内存块,所述基于所述内存配额向所述第一管理结构申请内存,检测所述一级管理结构的一级缓存链表中是否存在满足所述内存配额的所述目标内存块,包括:
检测所述内存配额是否为第三内存规格对应的类型或者第四内存规格对应的类型,其中,所述第三内存规格小于所述第四内存规格;
若检测到所述内存配额为所述第三内存规格对应的类型,则根据所述内存配额从所述一级部分满链表中确定第二部分满链表,在所述第二部分满链表中存在满足所述内存配额的内存块时,从满足所述内存配额的内存块的空闲内存中切分出对应所述内存配额的子内存块,确定切分出的子内存块为目标内存块;
在所述第二部分满链表中不存在满足所述内存配额的内存块时,检测所述一级空闲链表中是否存在满足所述内存配额的第三空闲链表;
若检测到所述一级空闲链表中存在满足所述内存配额的第三空闲链表,则从所述第三空闲链表中分配满足所述内存配额的内存块,从分配的内存块中切分出对应所述内存配额的子内存块,将切分出子内存块的内存块挂在所述一级部分满链表中,确定切分出的子内存块为所述一级管理结构的一级缓存链表中满足所述内存配额的所述目标内存块;
若检测到所述内存配额为所述第四内存规格对应的类型,则检测所述一级空闲链表中是否存在满足所述内存配额的第四空闲链表,若检测到所述一级空闲链表中存在满足所述内存配额的第四空闲链表,则从所述第四空闲链表中分配满足所述内存配额的内存块,确定分配出的内存块为所述一级管理结构的一级缓存链表中满足所述内存配额的所述目标内存块;
若检测到所述一级空闲链表中不存在满足所述内存配额的第三空闲链表,或者检测到所述一级空闲链表中不存在满足所述内存配额的第四空闲链表,则确定所述一级缓存链表中不存在满足所述内存配额的所述目标内存块。
7.根据权利要求2所述的内存管理方法,其特征在于,在所述基于所述内存配额向一级管理结构申请内存之前,还包括:
获取所述二级管理结构中的二级内存总量;
检测所述二级内存总量是否达到第一额度,若检测所述二级内存总量未达到所述第一额度,则执行所述基于所述内存配额向一级管理结构申请内存;
相应地,在所述基于所述内存配额向操作***申请内存之前,还包括:
获取所述一级管理结构中的一级内存总量;
检测所述一级内存总量是否达到第二额度,若检测所述一级内存总量未达到所述第二额度,则执行基于所述内存配额向操作***申请内存。
8.一种内存管理装置,其特征在于,所述内存管理装置包括:
创建模块,用于基于一级管理结构为待执行的N个任务创建N个二级管理结构,N为大于零的整数;
第一申请模块,用于针对任一二级管理结构,根据所述二级管理结构对应的任务在一次执行中所需的内存配额,从所述二级管理结构的二级缓存链表中申请目标内存块;
第二申请模块,用于若从所述二级缓存链表中申请不到所述目标内存块,则从所述一级管理结构的一级缓存链表中申请所述目标内存块,将申请到的所述目标内存块发送给所述二级缓存链表,并返回执行所述从所述二级管理结构的二级缓存链表中申请目标内存块;
第一释放模块,用于若从所述二级缓存链表中申请到所述目标内存块,则基于所述目标内存块执行当前轮次的所述任务,并在所述当前轮次的所述任务执行后,将所述目标内存块释放给所述二级缓存链表,在所述任务的所有轮次执行结束后,将所述二级缓存链表中的所述目标内存块释放给所述一级缓存链表。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的内存管理方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的内存管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311663567.2A CN117591293B (zh) | 2023-12-01 | 内存管理方法、装置、计算机设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311663567.2A CN117591293B (zh) | 2023-12-01 | 内存管理方法、装置、计算机设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117591293A true CN117591293A (zh) | 2024-02-23 |
CN117591293B CN117591293B (zh) | 2024-07-19 |
Family
ID=
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399825A (zh) * | 2013-08-05 | 2013-11-20 | 武汉邮电科学研究院 | 一种无锁化内存申请释放方法 |
US20150154119A1 (en) * | 2013-12-04 | 2015-06-04 | National Taiwan University | Memory allocation and page address translation system and method |
WO2015135506A1 (en) * | 2014-03-13 | 2015-09-17 | Mediatek Inc. | Method for controlling memory device to achieve more power saving and related apparatus thereof |
US20170052899A1 (en) * | 2015-08-18 | 2017-02-23 | Macronix International Co., Ltd. | Buffer cache device method for managing the same and applying system thereof |
WO2018018896A1 (zh) * | 2016-07-29 | 2018-02-01 | 华为技术有限公司 | 内存管理装置和方法 |
US20190220391A1 (en) * | 2016-09-28 | 2019-07-18 | Huawei Technologies Co., Ltd. | Memory management method and device |
CN110109763A (zh) * | 2019-04-12 | 2019-08-09 | 厦门亿联网络技术股份有限公司 | 一种共享内存管理方法及装置 |
CN110502335A (zh) * | 2019-06-12 | 2019-11-26 | 成都虚谷伟业科技有限公司 | 分布式数据库多级内存管理装置 |
CN111708641A (zh) * | 2020-07-14 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 一种内存管理方法、装置、设备及计算机可读存储介质 |
WO2021062981A1 (zh) * | 2019-09-30 | 2021-04-08 | 深圳忆联信息***有限公司 | Ssd数据存储节点管理方法、装置及计算机设备 |
CN113268349A (zh) * | 2021-06-04 | 2021-08-17 | 科东(广州)软件科技有限公司 | 一种计算机内存管理方法、装置、设备及存储介质 |
WO2022062833A1 (zh) * | 2020-09-22 | 2022-03-31 | 深圳云天励飞技术股份有限公司 | 内存分配方法及相关设备 |
CN114490060A (zh) * | 2022-01-24 | 2022-05-13 | 网易(杭州)网络有限公司 | 内存分配方法、装置、计算机设备和计算机可读存储介质 |
CN115344507A (zh) * | 2021-05-14 | 2022-11-15 | 华为技术有限公司 | 内存分配方法、装置和*** |
CN116661690A (zh) * | 2023-05-23 | 2023-08-29 | 阿里巴巴(中国)有限公司 | 记录内存状态的方法、装置、计算机设备及存储介质 |
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103399825A (zh) * | 2013-08-05 | 2013-11-20 | 武汉邮电科学研究院 | 一种无锁化内存申请释放方法 |
US20150154119A1 (en) * | 2013-12-04 | 2015-06-04 | National Taiwan University | Memory allocation and page address translation system and method |
WO2015135506A1 (en) * | 2014-03-13 | 2015-09-17 | Mediatek Inc. | Method for controlling memory device to achieve more power saving and related apparatus thereof |
US20170052899A1 (en) * | 2015-08-18 | 2017-02-23 | Macronix International Co., Ltd. | Buffer cache device method for managing the same and applying system thereof |
WO2018018896A1 (zh) * | 2016-07-29 | 2018-02-01 | 华为技术有限公司 | 内存管理装置和方法 |
US20190220391A1 (en) * | 2016-09-28 | 2019-07-18 | Huawei Technologies Co., Ltd. | Memory management method and device |
CN110109763A (zh) * | 2019-04-12 | 2019-08-09 | 厦门亿联网络技术股份有限公司 | 一种共享内存管理方法及装置 |
CN110502335A (zh) * | 2019-06-12 | 2019-11-26 | 成都虚谷伟业科技有限公司 | 分布式数据库多级内存管理装置 |
WO2021062981A1 (zh) * | 2019-09-30 | 2021-04-08 | 深圳忆联信息***有限公司 | Ssd数据存储节点管理方法、装置及计算机设备 |
CN111708641A (zh) * | 2020-07-14 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 一种内存管理方法、装置、设备及计算机可读存储介质 |
WO2022062833A1 (zh) * | 2020-09-22 | 2022-03-31 | 深圳云天励飞技术股份有限公司 | 内存分配方法及相关设备 |
CN115344507A (zh) * | 2021-05-14 | 2022-11-15 | 华为技术有限公司 | 内存分配方法、装置和*** |
WO2022237624A1 (zh) * | 2021-05-14 | 2022-11-17 | 华为技术有限公司 | 内存分配方法、装置和*** |
CN113268349A (zh) * | 2021-06-04 | 2021-08-17 | 科东(广州)软件科技有限公司 | 一种计算机内存管理方法、装置、设备及存储介质 |
CN114490060A (zh) * | 2022-01-24 | 2022-05-13 | 网易(杭州)网络有限公司 | 内存分配方法、装置、计算机设备和计算机可读存储介质 |
CN116661690A (zh) * | 2023-05-23 | 2023-08-29 | 阿里巴巴(中国)有限公司 | 记录内存状态的方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
刘林等: ""FreeRTOS内存管理方案的分析与改进"", 《计算机工程与应用》, vol. 52, no. 13, 31 December 2016 (2016-12-31), pages 76 - 80 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111679921B (zh) | 内存共享方法、内存共享装置及终端设备 | |
US8442955B2 (en) | Virtual machine image co-migration | |
EP3260993A1 (en) | File operation method and device | |
JP2013109756A (ja) | データ処理システムのメモリ使用状況を追跡する方法 | |
KR100900439B1 (ko) | 임베디드 시스템을 위한 메모리 부족상황 관리 방법 및장치 | |
CN104102693A (zh) | 对象处理方法和装置 | |
CN112395322B (zh) | 一种基于分级缓存的列表数据显示方法、装置及终端设备 | |
CN111078410A (zh) | 内存分配方法、装置、存储介质及电子设备 | |
WO2021114025A1 (zh) | 增量数据确定方法、确定装置、服务器及终端设备 | |
US20120227056A1 (en) | Method and system for enabling access to functionality provided by resources outside of an operating system environment | |
CN114418828B (zh) | 显存管理方法、装置、设备、存储介质及程序产品 | |
CN114327917A (zh) | 内存管理方法、计算设备及可读存储介质 | |
CN116633900A (zh) | 逻辑地址分配方法、装置、电子设备及存储介质 | |
CN112835511A (zh) | 分布式存储集群的数据写入方法、装置、设备和介质 | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
CN109947667B (zh) | 数据访问预测方法和装置 | |
CN112269665B (zh) | 内存的处理方法和装置、电子设备和存储介质 | |
CN117591293B (zh) | 内存管理方法、装置、计算机设备及计算机可读存储介质 | |
CN117591293A (zh) | 内存管理方法、装置、计算机设备及计算机可读存储介质 | |
CN111708715B (zh) | 内存分配方法、内存分配装置及终端设备 | |
CN108959517B (zh) | 文件管理方法、装置及电子设备 | |
CN112947863A (zh) | 一种飞腾服务器平台下存储空间合并成的方法 | |
CN111106954B (zh) | 一种基于地图的拓扑节点显示方法和装置 | |
CN112527276A (zh) | 一种可视化编程工具中的数据更新方法、装置及终端设备 | |
CN114721799B (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 |