CN111352863A - 内存管理方法、装置、设备及存储介质 - Google Patents
内存管理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111352863A CN111352863A CN202010161659.0A CN202010161659A CN111352863A CN 111352863 A CN111352863 A CN 111352863A CN 202010161659 A CN202010161659 A CN 202010161659A CN 111352863 A CN111352863 A CN 111352863A
- Authority
- CN
- China
- Prior art keywords
- memory page
- identifier
- memory
- target
- linked list
- 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
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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种内存管理方法、装置、设备及存储介质,属于计算机技术领域。该方法包括:获取待存储的第一内存页标识及对应的第一内存页集合标识,第一内存页集合中包括第一内存页,建立第一内存页标识与第一内存页集合标识的映射关系,在目标数组中确定第一内存页标识对应的目标元素,将映射关系存储于目标元素对应的目标链表中。因此本申请实施例提供了一种数组与链表结合的数据结构,来存储内存页标识与内存页集合标识的映射关系,仅需消耗该目标链表所占用的内存,实现按需申请,无需占用额外内存,可以降低存储内存页标识与内存页集合标识的映射关系所占用的内存,节省了内存空间。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种内存管理方法、装置、设备及存储介质。
背景技术
为了提高计算机设备的性能,计算机设备中的***内存以内存页(page)为单位进行分割,连续的多个内存页构成内存页集合(span),内存池中可以存储内存页标识与内存页集合标识的映射关系,根据该映射关系管理内存。
相关技术中,通常采用三层树结构的记录表来存储内存页标识与内存页集合标识的映射关系,会导致一个映射关系需要消耗三层树结构中的三个数组,会消耗大量的内存,造成对内存的浪费。
发明内容
本申请实施例提供了一种内存管理方法、装置、设备及存储介质,可以降低存储内存页标识与内存页集合标识的映射关系所占用的内存。所述技术方案如下:
一方面,提供了一种内存管理方法,所述方法包括:
获取待存储的第一内存页标识及对应的第一内存页集合标识,第一内存页集合中包括第一内存页;
建立所述第一内存页标识与所述第一内存页集合标识的映射关系;
在目标数组中确定所述第一内存页标识对应的目标元素,所述目标数组中的每个元素对应一个链表,且所述每个元素对应一个或多个内存页标识;
将所述映射关系存储于所述目标元素对应的目标链表中。
另一方面,提供了一种内存管理装置,所述装置包括:
第一获取模块,用于获取待存储的第一内存页标识及对应的第一内存页集合标识,第一内存页集合中包括第一内存页;
关系建立模块,用于建立所述第一内存页标识与所述第一内存页集合标识的映射关系;
元素确定模块,用于在目标数组中确定所述第一内存页标识对应的目标元素,所述目标数组中的每个元素对应一个链表,且所述每个元素对应一个或多个内存页标识;
关系存储模块,用于将所述映射关系存储于所述目标元素对应的目标链表中。
可选地,所述元素确定模块,包括:
处理单元,用于对所述第一内存页标识和所述目标数组的元素个数进行处理,得到所述第一内存页标识对应的目标元素。
可选地,所述装置还包括:
第二获取模块,用于获取待查询的所述第一内存页标识;
元素确定模块,用于在所述目标数组中确定所述第一内存页标识对应的所述目标元素;
第一查询模块,用于在所述目标元素对应的目标链表中,查询所述第一内存页标识对应的所述第一内存页集合标识。
可选地,所述目标链表中包括多个映射关系,所述第一查询模块,包括:
关系确定单元,用于遍历所述目标链表中的所述多个映射关系,确定包括所述第一内存页标识的映射关系;
标识查询单元,用于查询所述映射关系中的第一内存页集合标识。
可选地,所述第二获取模块,包括:
指令接收单元,用于接收映射关系移除指令,所述映射关系移除指令包括所述第一内存页标识;
所述装置还包括:
关系移除模块,用于将所述映射关系在所述目标链表中移除。
可选地,内存页标识为数值,所述装置还包括:
标识确定模块,用于确定所述第一内存页标识与第二内存页标识为相邻的数值;
第二查询模块,用于查询所述第一内存页标识对应的所述第一内存页集合标识,确定所述第一内存页集合标识对应的第一内存页集合;
所述第二查询模块,还用于查询所述第二内存页标识对应的所述第二内存页集合标识,确定所述第二内存页集合标识对应的第二内存页集合;
集合合并模块,用于将所述第一内存页集合与所述第二内存页集合进行合并。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行以实现如所述内存管理方法中所执行的操作。
再一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如所述内存管理方法中所执行的操作。
本申请实施例提供的方法、装置、设备及存储介质,获取待存储的第一内存页标识及对应的第一内存页集合标识,第一内存页集合中包括第一内存页,建立第一内存页标识与第一内存页集合标识的映射关系,在目标数组中确定第一内存页标识对应的目标元素,目标数组中的每个元素对应一个链表,将映射关系存储于目标元素对应的目标链表中。因此本申请实施例提供了一种数组与链表结合的数据结构,来存储内存页标识与内存页集合标识的映射关系,仅需消耗该目标链表所占用的内存,实现按需申请,无需占用额外内存,可以降低存储内存页标识与内存页集合标识的映射关系所占用的内存,节省了内存空间。
并且,当需要存储新的映射关系时,在目标链表中新增一个节点来存储映射关系,实现了链表的动态扩展。
并且,对第一内存页标识和目标数组的元素个数进行处理,得到第一内存页标识对应的目标元素,目标元素对应目标链表,将映射关系存储于目标链表中即可,在存储多个映射关系的情况下,多个映射关系占用内存的大小不受内存页标识的影响,只跟存储的映射关系的个数相关。
并且,采用数组与链表结合的数据结构,来存储内存页标识与内存页集合标识的映射关系,由于可以通过第一内存页标识确定对应的目标元素,直接在目标元素对应的目标链表中存储映射关系,因此,存储映射关系的过程所需的时间与目标数组及链表的大小无关,存储映射关系的时间复杂度为常数。
并且,采用数组与链表结合的数据结构存储映射关系后,在查询第一内存页标识对应的第一内存页集合标识的过程中,由于可以通过第一内存页标识确定对应的目标元素,并且目标元素对应的链表中多数链表的长度小于或者等于 1,而链表长度小于或等于1的时候,查询映射关系所需的时间为常数,因此在目标数组中查询映射关系的时间复杂度无限趋近于常数。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种内存管理方法的流程图。
图2是本申请实施例提供的一种内存页的示意图。
图3是本申请实施例提供的一种三级缓存结构的内存池的示意图。
图4是本申请实施例提供的一种目标数组与链表结合的数据结构的示意图。
图5是相关技术提供的一种三层树结构的记录表的示意图。
图6是本申请实施例提供的一种合并内存页集合方法的流程图。
图7是本申请实施例提供的一种释放内存及合并内存页集合的流程图。
图8是本申请实施例提供的一种内存管理装置的结构示意图。
图9是本申请实施例提供的另一种内存管理装置的结构示意图。
图10是本申请实施例提供的一种终端的结构示意图。
图11是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种概念,但除非特别说明,这些概念不受这些术语限制。这些术语仅用于将一个概念与另一个概念区分。举例来说,在不脱离本申请的范围的情况下,可以将第一内存页标识称为第二内存页标识,且类似地,可将第二内存页标识称为第一内存页标识。
其中,多个是指两个或者两个以上,例如,多个映射关系可以是两个映射关系、三个映射关系等任一大于等于二的整数个映射关系。每个是指至少一个中的每一个,例如,每个元素是指多个元素中的每一个元素,若多个元素为3 个元素,则每个元素是指3个元素中的每一个元素。
为了便于理解本申请实施例的技术过程,下面对本申请实施例所涉及的一些名词进行解释:
云技术(Cloud Technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云计算(Cloud Computing)是分布式计算的一种,它将计算任务分布在大量计算机构成的资源池上,使各种应用***能够根据需要获取计算力、存储空间和信息服务,并且可以随时获取,按需使用,随时扩展,按使用付费。云计算的基础能力提供商,建立云计算资源池,在资源池中部署多种类型的虚拟资源,供外部用户选择使用。云计算资源池中主要包括:计算设备(虚拟化机器,包含操作***)、存储设备和网络设备。
云存储(Cloud Storage)是在云计算概念上延伸和发展出来的新概念,分布式云存储***(简称存储***)是指通过集群应用、网格技术以及分布存储文件***等功能,将网络中大量不同类型的存储设备(也称为存储节点)通过应用软件或应用接口集合起来协同工作,由一个存储设备或者多个存储设备构成一个存储集群,共同对外提供数据存储和业务访问功能。目前,存储***的存储方法为:创建块设备。在创建块设备时,为每个块设备分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。其中,本申请实施例中,管理的内存可以为块设备中的内存。
本申请实施例提供了一种内存管理方法,执行主体为计算机设备。
在一种可能实现方式中,该计算机设备可以为终端,终端可以是手机、计算机、平板电脑、智能电视、笔记本电脑、台式计算机、智能音箱、智能手表等多种类型的设备。
或者,该计算机设备可以为服务器。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
图1是本申请实施例提供的一种内存管理方法的流程图。本申请实施例的执行主体为计算机设备,参见图1,该方法包括:
101、计算机设备获取待存储的第一内存页标识及对应的第一内存页集合标识。
计算机设备中运行有应用,内存池是应用的一个组件,该内存池用于向计算机设备的***申请内存,将申请到的内存分配给该应用使用,应用可以向该应用的内存池申请内存。其中,内存池将内存以内存页为单位进行分割,内存页是内存池管理内存的最小单位,即内存池以内存页为单位进行内存管理,应用使用的内存可以包括一个或多个内存页,则内存的大小为内存页大小的整数倍。其中,内存页的大小可由计算机设备通过内存池进行设置,例如,一个内存页的大小可以为8KB(Kilobyte,千字节)、16KB等。图2是本申请实施例提供的一种内存页的示意图,参见图2,内存空间中包括多个大小为8KB的内存页201。
内存池进行内存分页的原因在于:应用不能直接访问物理内存地址,只能访问虚拟内存地址,因此只能将虚拟内存空间映射到物理内存空间,来实现数据的读写。应用运行时可能仅需处理部分数据,如果将应用的整个虚拟内存空间均映射到物理内存空间,会导致应用需要对物理内存空间中全部的数据进行读写,降低了应用的运行效率。因此,使用分页的方式,分别将虚拟内存空间和物理内存空间分成大小相等的内存页,将虚拟内存空间的内存页映射到物理内存空间的内存页,从而能够实现以内存页为单位对内存进行管理,在应用读写数据时能够提高应用的运行效率。
内存页集合包括连续的多个内存页,内存页集合的大小由内存页的大小以及内存页的数量决定,例如,内存页的大小为page字节,内存页集合中包括n 个连续的内存页,则该内存页集合的大小为n*page字节。其中内存池向***申请内存时,以内存页集合为单位进行申请,以避免申请过于频繁。
由于内存页集合中包括内存页,为了后续查询内存页属于哪个内存页集合,或者查询内存页集合中包括哪些内存页,需要将内存页集合与内存页的对应关系存储下来。因此计算机设备可以通过内存池获取待存储的第一内存页标识,以及该第一内存标识对应的第一内存页集合标识。可选地,计算机设备接收映射关系存储指令,映射关系存储指令中包括第一内存页标识和第一内存页集合标识,该映射关系存储指令用于指示存储第一内存页标识和第一内存页集合标识的映射关系,则计算机设备可以根据该映射关系存储指令获取待存储的第一内存页标识和第一内存页集合标识。
其中,每个内存页对应有内存页标识,内存页标识用于表示内存页,可以为内存页的编号、名称等,如内存页标识可以为0、1、2等。每个内存页集合对应有内存页集合标识,内存页集合标识用于表示内存页集合,可以为内存页集合的编号、名称等。本申请实施例中,第一内存页标识用于表示第一内存页,第一内存页集合标识用于表示第一内存页集合。第一内存页标识与第一内存页集合标识对应,表示该第一内存页集合中包括该第一内存页。
在一种可能实现方式中,内存池设有三级缓存,分别为第一级缓存、第二级缓存和第三级缓存。
第三级缓存与线程对应,且每个线程之间相互独立,因此线程内的操作无需加锁,访问第三级缓存中的内存的效率较高。其中,第三级缓存中缓存的是 object(内存对象)分块,object分块是向内存池申请的内存块,计算机设备中的应用向内存池申请内存时,以object分块为单位进行申请。将内存页集合进行分块可以得到多个object分块,一个object分块包括一个或者多个内存页,例如当内存页的大小为8KB时,向内存池申请的object分块大小可以为8KB、16KB、32KB等,该object分块的大小为内存页大小的整数倍,且该object分块的大小不大于内存页集合的大小。例如内存页的大小为8KB,内存页集合中包括8个内存页,共64KB,则该内存页集合可以按16KB进行分块,得到4个大小为16KB的object分块。
第二级缓存是多个线程之间共享的,因此访问第二级缓存中的内存时需要加锁。该第二级缓存中缓存的是使用中的内存页集合,内存页集合中的部分 object正在被第三级缓存使用。
第一级缓存也是多个线程之间共享的,访问第一级缓存中的内存时也需要加锁。该第一级缓存中缓存的也是内存页集合,与第二级缓存的区别在于第一级缓存中的内存页集合是完全空闲的。并且第一级缓存中如果有地址相邻的内存页集合,可以合并成一个内存页集合,以便更高效地利用。当内存池的空间不足时,第一级缓存以内存页集合为单位向***申请内存,这样能够减少***申请的频率,可以提高计算机设备的性能。
图3是本申请实施例提供的一种三级缓存结构的内存池的示意图。第一级缓存301中包括多个内存页集合列表,每个内存页集合列表中包括多个内存页集合,该多个内存页集合均处于空闲状态,第二级缓存302中包括多个内存页集合,且内存页集合中一部分内存处于使用状态,另一部分处于空闲状态,或者内存页集合中所有内存均处于使用状态。第三级缓存303中包括多个内存对象,该内存对象处于空闲状态。从图3中可以看出,计算机设备中的应用304 与内存池中的第三级缓存303建立通信连接,使用第三级缓存303中的内存,计算机设备中的***内存305与内存池中的第一级缓存301建立通信连接,由第一级缓存301向***内存305申请内存。
内存池根据三级缓存为计算机设备中的应用分配内存。当计算机设备中的应用向内存池申请内存,内存池根据申请内存的大小,确认所需object分块的大小,假设所需object分块的大小是M字节,则内存池从第三级缓存中进行查找,如果第三级缓存中有M字节大小的object分块,内存池直接将该object分块分配给该应用使用。如果第三级缓存中没有M字节大小的object分块,则内存池从第二级缓存中进行查找,判断第二级缓存中是否有按M字节进行分块的内存页集合,如果有则从该内存页集合中取出一个object分块返回到第三级缓存中,将第三级缓存中的该object分块分配给该应用使用。如果第二级缓存中没有按M字节进行分块的内存页集合,则内存池向第一级缓存申请目标内存页集合(expectSpan),其中该目标内存页集合是指可以按M字节进行分块的内存页集合。内存池从第一级缓存中查找目标内存页集合,如果第一级缓存中存在目标内存页集合,则将该目标内存页集合返回到第二级缓存中,将第二级缓存中的目标内存页集合按照M字节进行分块,从中取出M字节大小的object 分块返回到第三级缓存中,将第三级缓存中的该object分块分配给该应用使用。如果第一级缓存中不存在目标内存页集合,但存在大于目标内存页集合的内存页集合,则从该内存页集合中拆分出目标内存页集合后,执行上述步骤。如果第一级缓存中不存在目标内存页集合,也不存在大于目标内存页集合的内存页集合,则内存池向***申请新的内存并返回给第一级缓存,然后执行上述步骤。
102、计算机设备建立第一内存页标识与第一内存页集合标识的映射关系。
计算机设备获取到待存储的第一内存页标识与第一内存页集合标识后,通过应用程序中的内存池建立该第一内存页标识与第一内存页集合标识的映射关系。
可选地,通过建立包括内存页标识与内存页集合标识的entry(映射记录),来建立内存页标识与内存页集合标识的映射关系。其中,entry={pageId,span},其中,pageId表示内存页标识,span表示内存页集合标识。由于一个内存页集合中可以包括多个内存页,所以多个不同的内存页标识可能对应相同的内存页集合标识。例如,内存页集合中包括内存页标识为1、2、3的3个内存页,该内存页集合的标识为span,则3个内存页对应的entry分别为:{pageId1,span}、 {pageId2,span}和{pageId3,span}。
103、计算机设备在目标数组中确定第一内存页标识对应的目标元素。
本申请实施例中,计算机设备的内存池中存储有目标数组和链表,该计算机设备通过目标数组与链表结合的数据结构,来存储内存页标识与内存页集合标识的映射关系。目标数组和链表可以称为内存池的元数据,内存池通过存储内存页标识与内存页集合标识的映射关系,来对内存进行管理,例如进行内存页集合的合并等。
其中,目标数组中包括多个元素,该目标数组中元素的个数可以由计算机设备默认设置,该目标数组中的元素可以为数值,如二进制数值等,本申请实施例对此不做限定。其中,该数据结构中,目标数组中的每个元素对应一个或多个内存页标识,并且一个内存页标识仅与目标数组中的一个元素对应,根据内存页标识可确定一个对应的元素。其中,目标数组中的每个元素还对应一个链表,元素对应的链表用于存储该元素对应的内存页标识与内存页集合标识的映射关系。
图4是本申请实施例提供的一种目标数组与链表结合的数据结构的示意图,目标数组401中包括215个元素402,每个元素402对应一个链表,参见图4,有些元素402对应的链表中尚未存储映射关系,有些元素402对应的链表中存储有一个映射关系,有些元素402对应的链表中存储有两个映射关系。
当计算机设备建立了第一内存页标识与该第一内存页集合标识的映射关系,该计算机设备获取预先存储的目标数组,在该目标数组中确定该第一内存页标识对应的目标元素。
在一种可能实现方式中,计算机设备对第一内存页标识和目标数组的元素个数进行处理,得到第一内存页标识对应的目标元素,目标数组的元素个数即为目标数组的长度。可选地,计算机设备可以通过内存池采用预设算法对第一内存页标识和目标数组的元素个数进行处理,该预设算法可以为任一Convert(转换)算法,仅需保证元素与内存页标识之间的一对多关系即可,本申请对预设算法不做限定。
可选地,第一内存页标识为二进制数值,目标元素也为二进制数值,将目标数组的元素个数转换为二进制数值,采用预设算法,对第一内存页标识的二进制数值,以及元素个数的二进制数值进行处理,得到另一个二进制数值,该二进制数值即为第一内存页标识对应的目标元素。可选地,该预设算法可以为二进制数值之间的按位与运算,按位与运的运算符为双目运算符“&”,按位与运算是指将两个参与运算的二进制数值对应的二进位相与,若对应的两个二进位都为1,则结果位为1,若对应的两个二进位为其余情况则结果位均为0。该预设算法还可以为其他方式的算法,本申请实施例对此不做限定。
例如,第一内存页标识用pageId表示,目标数组的元素个数用arrLen表示,元素用pos表示,则该预设算法为:pos=pageId&(arrLen-1)。其中64位***中包括251个内存页,则pageId的范围是0~(251-1),目标数组中包括215个元素,则arrLen-1为215-1,多个pageId可能对应一个元素,计算机设备通过“按位与”运算将pageId转换到数组范围内。
举例来说,设arrLen=4,那么arrLen-1=3(二进制为0011),用pageId=5(0101)、pageId=6(0110)、pageId=7(0111)、pageId=8(1000)、pageId=9 (1001)分别套入上述公式,得到的值是1(0001)、2(0010)、3(0011)、 0(0000)、1(0001),均在目标数组范围0~3内,且pageId=5与pageId=9时,均对应目标数组中的元素1。
104、计算机设备将映射关系存储于目标元素对应的目标链表中。
当计算机设备确定第一内存页标识对应的目标元素之后,确定该目标元素对应的目标链表,将第一内存页标识与第一内存页集合标识的映射关系存储于该目标链表中。
可选地,当计算机设备确定第一内存页标识对应的目标元素之后,通过内存池在目标链表中增加新节点,将第一内存页标识与第一内存页集合标识的映射关系存储于目标链表的新节点中。
105、计算机设备接收映射关系移除指令。
计算机设备将第一内存页标识与第一内存页集合标识的映射关系存储于目标链表中之后,还可以将该映射关系从目标链表中移除。例如,当第一内存页集合与其他内存页集合合并之后,该第一内存页不再与该第一内存页集合对应,则可以将第一内存页标识与第一内存页集合标识的映射关系移除。
因此,将映射关系存储于目标链表中之后,计算机设备可能会接收到映射关系移除指令,该映射关系移除指令包括待移除的第一内存页标识,该映射关系移除指令用于指示移除该第一内存页标识与第一内存页集合标识的映射关系。且,由于映射关系移除指令中仅包括第一内存页标识,因此计算机设备需要先查询该第一内存页标识对应的第一内存页集合标识。
106、计算机设备在目标数组中确定第一内存页标识对应的目标元素,在目标元素对应的目标链表中,查询第一内存页标识对应的第一内存页集合标识。
当计算机设备接收到映射关系移除指令,获取该映射关系移除指令中包括的第一内存页标识,计算机设备在目标数组中确定第一内存页标识对应的目标元素,获取该目标元素对应的目标链表,在目标链表中查询该第一内存页标识对应的第一内存页集合标识。
在一种可能实现方式中,计算机设备采用预设算法,对第一内存页标识和目标数组的元素个数进行处理,得到第一内存页标识对应的目标元素。其中,该预设算法与上述步骤103中的预设算法类似,在此不再一一赘述。
在一种可能实现方式中,目标链表中包括多个映射关系,计算机设备遍历目标链表中的多个映射关系,确定包括第一内存页标识的映射关系,查询该映射关系中的第一内存页集合标识。
由于在存储映射关系的过程中,不同的内存页标识对应的目标元素可能相同,因此目标元素对应的目标链表中可能包括多个映射关系。因此,计算机设备遍历该目标链表中的多个映射关系,判断映射关系中是否包括第一内存页标识。当计算机设备确定映射关系中不包括第一内存页标识时,则继续查询目标链表中的下一个映射关系;当计算机设备确定映射关系中包括第一内存页标识时,则计算机设备查询该映射关系中包括的内存页集合标识,该内存页集合标识即为第一内存页标识对应的第一内存页集合标识。
本申请实施例提供的存储方式,由于可以通过第一内存页标识确定对应的目标元素,直接在目标元素对应的目标链表中存储映射关系,存储映射关系的过程所需的时间与目标数组及链表的大小无关,因此,存储映射关系的时间复杂度为O(1),O(1)代表常数。本申请实施例提供的查询方式中,由于可以通过第一内存页标识确定对应的目标元素,因此查询第一内存页标识对应的目标元素过程所需的时间与目标数组的大小无关,在目标链表中查询第一内存页标识对应的第一内存页集合标识的过程中,由于需要遍历目标链表,因此所需的时间与链表的大小有关,但是,由于目标元素对应的链表中多数链表的长度小于或者等于1,而链表长度小于或等于1的时候,查询映射关系所需的时间为常数,因此在目标数组中查询映射关系的时间复杂度无限趋近于O(1)。
其中,在计算机技术中,时间复杂度又称为时间复杂性,时间复杂度是一个函数,它用于定性描述某一算法的运行时间。
107、计算机设备将映射关系在目标链表中移除。
当计算机设备查询到包括第一内存页标识和第一内存页集合标识的映射关系,将该映射关系在目标链表中移除。
需要说明的是,本申请实施例中说明了将第一内存页标识和第一内存页集合标识的映射关系存储下来之后,后续可以根据包括第一内存页标识的映射关系移除指令,查询第一内存页标识对应的第一内存页集合标识,将第一内存页标识和第一内存页集合标识的映射关系移除。而在另一实施例中,还可能存在其他情况需要查询第一内存页标识对应的第一内存页集合标识,则计算机设备获取待查询的第一内存页标识,在目标数组中确定第一内存页标识对应的目标元素,在目标元素对应的目标链表中,查询第一内存页标识对应的第一内存页集合标识。其中,上述查询过程与步骤106类似,在此不再一一赘述。
相关技术中,采用三层树结构的记录表来存储内存页标识与内存页集合标识的映射关系。图5是相关技术提供的一种三层树结构的记录表的示意图,在 64位的***中,共包括251个内存页,参见图3,三层树结构中每个节点对应217个子节点,且每个节点的217个子节点以数组形式存在。其中第一层结构501包括217个第一层节点,第二层结构502包括217个第一层节点对应的234个第二层节点,第三层结构503包括234个第二层节点对应的251个第三层节点。每个内存页标识可确定一组节点,一组节点中包括第一层节点、第二层节点和第三层节点,且该第三层节点为该第二层节点的子节点,该第二层节点为第一层节点的子节点。在内存页标识对应的第三层节点中存储该内存页标识对应的内存页集合标识,因此251个第三层节点分别存储251个内存页对应的251个内存页集合标识,由此实现存储内存页标识与内存页集合标识的映射关系。上述方法中,每个节点的子节点以数组形式存在,一个节点占用8B,一个包括217个节点的数组占用1MB。由于节点以数组形式存在,而无法单独存在,因此在存储内存页标识与内存页集合标识的映射关系需要消耗三层树结构中每层的一个数组,也即是需消耗3个数组,总共需要3MB的内存。并且,消耗的3个数组中,存储某一内存页标识与某一内存页集合标识的映射关系时,实际只用到了3个节点,因此用三层树结构的记录表存储映射关系,会消耗大量的内存,造成对内存的浪费。并且存储多个映射关系时所占用的内存会受到内存页标识对应的节点的分布情况的影响,对应的多个节点越分散,最终占用的内存越大。
本申请实施例提供的方法,在64位的***中,共包括251个内存页,计算机设备在目标数组中设置有215个元素,每个元素对应一个链表,则共有215个链表,每个链表的初始大小是16B,因此215个链表占用的初始内存在为512KB,而一个映射关系的大小为16B,链表中一个节点大小为16B。本申请实施例中的链表是动态扩展的,在链表中新增一个节点用于存储映射关系,仅需申请的内存大小为32B,占用的内存较小。
本申请实施例提供的方法,获取待存储的第一内存页标识及对应的第一内存页集合标识,第一内存页集合中包括第一内存页,建立第一内存页标识与第一内存页集合标识的映射关系,在目标数组中确定第一内存页标识对应的目标元素,目标数组中的每个元素对应一个链表,将映射关系存储于目标元素对应的目标链表中。因此本申请实施例提供了一种数组与链表结合的数据结构,来存储内存页标识与内存页集合标识的映射关系,仅需消耗该目标链表所占用的内存,实现按需申请,无需占用额外内存,可以降低存储内存页标识与内存页集合标识的映射关系所占用的内存,节省了内存空间。
并且,当需要存储新的映射关系时,在目标链表中增加新节点来存储映射关系,实现了链表的动态扩展。
并且,对第一内存页标识和目标数组的元素个数进行处理,得到第一内存页标识对应的目标元素,目标元素对应目标链表,将映射关系存储于目标链表中即可,在存储多个映射关系的情况下,多个映射关系占用内存的大小不受内存页标识的影响,只跟存储的映射关系的个数相关。
并且,采用数组与链表结合的数据结构,来存储内存页标识与内存页集合标识的映射关系,由于可以通过第一内存页标识确定对应的目标元素,直接在目标元素对应的目标链表中存储映射关系,因此,存储映射关系的过程所需的时间与目标数组及链表的大小无关,存储映射关系的时间复杂度为常数。
并且,采用数组与链表结合的数据结构存储映射关系后,在查询第一内存页标识对应的第一内存页集合标识的过程中,由于可以通过第一内存页标识确定对应的目标元素,并且目标元素对应的链表中多数链表的长度小于或者等于 1,而链表长度小于或等于1的时候,查询映射关系所需的时间为常数,因此在目标数组中查询映射关系的时间复杂度无限趋近于常数。
图1提供的实施例中,说明了存储及查询映射关系的过程,其中通过图1 的实施例提供的方法将映射关系存储下来后,计算机设备可以根据映射关系来确定相邻的内存页集合,实现相邻的内存页集合的合并。
图6是本申请实施例提供的一种合并内存页集合方法的流程图。本申请实施例的执行主体为计算机设备,参见图6,该方法包括:
601、计算机设备确定第一内存页标识与第二内存页标识为相邻的数值。
当计算机设备获取到第一内存页标识,确定与第一内存页标识为相邻的数值的第二内存页标识,其中第一内存页标识和第二内存页标识均为数值。
在一种可能实现方式中,计算机设备接收内存页集合合并指令,该内存页集合合并指令包括第一内存页标识,该内存页集合合并指令用于指示将该第一内存页标识对应的内存页集合与其相邻的内存页集合进行合并。当计算机设备获取到内存页集合合并指令中的第一内存页标识,确定与第一内存页标识为相邻的数值的第二内存页标识。
在另一种可能实现方式中,计算机设备获取到第一内存页集合,该第一内存页集合中包括连续的多个内存页,查询该第一内存页集合对应的起始内存页标识(leftPageId)和终止内存页标识(rightPageId),确定第一内存页标识为起始内存页标识或者终止内存页标识,该第一内存页标识为数值,则计算机设备确定与该第一内存页标识为相邻的数值且不属于该第一内存页集合的第二内存页标识。
可选地,第一内存页集合包括连续的多个内存页,内存页标识为数值,第一内存页集合中的多个内存页对应递增形式的内存页标识,该第一内存页集合携带起始内存页标识,以及该第一内存页集合所包括的内存页数量。计算机设备确定第一内存页集合携带的起始内存页标识和内存页数量,可以根据起始内存页标识和内存页数量,确定第一内存页集合对应的终止内存页标识,由此得到第一内存页集合对应的起始内存页标识和终止内存页标识。
可选地,当计算机设备确定第一内存页标识为起始内存页标识时,通过对该第一内存页标识减1,来得到该第一内存页标识相邻的第二内存页标识;当计算机设备确定第一内存页标识为终止内存页标识时,通过对该第一内存页标识加1,来得到该第一内存页标识相邻的第二内存页标识。
602、计算机设备查询第一内存页标识对应的第一内存页集合标识,确定第一内存页集合标识对应的第一内存页集合。
当计算机设备确定第一内存页标识与第二内存页标识为相邻的数值,计算机设备查询该第一内存页标识对应的第一内存页集合标识,确定第一内存页集合标识对应的第一内存页集合。
在一种可能实现方式中,计算机设备查询第一内存页标识对应的第一内存页集合标识的过程,与上述步骤106类似,在此不再一一赘述。
603、计算机设备查询第二内存页标识对应的第二内存页集合标识,确定第二内存页集合标识对应的第二内存页集合。
当计算机设备确定第一内存页标识与第二内存页标识为相邻的数值,查询该第二内存页标识对应的第二内存页集合标识,确定第二内存页集合标识对应的第二内存页集合。
在一种可能实现方式中,计算机设备查询第二内存页标识对应的第二内存页集合标识的过程,与上述步骤106类似,在此不再一一赘述。
需要说明的是,本申请实施例仅以先执行步骤602再执行步骤603为例进行说明,而在另一实施例中可以先执行步骤603,再执行步骤602,或者还可以同时执行步骤602和步骤603。
604、计算机设备将第一内存页集合与第二内存页集合进行合并。
当计算机设备确定第一内存页集合和第二内存页集合,由于第一内存页集合包括第一内存页标识,第二内存页集合包括第二内存页标识,且第一内存页标识与第二内存页标识为相邻的数值,则第一内存页集合与第二内存页集合相邻,则计算机设备将该第一内存页集合与该第二内存页集合进行合并。
内存池的第一级缓存中包括多个空闲的内存页集合,内存页集合中包括多个连续的内存页,其中内存页标识为数值。当两个内存页集合中两边的内存页标识为相邻的数值时,可以认为这两个内存页集合相邻,则可以将这两个内存页集合进行合并。例如,内存页集合A中包括内存页3和内存页4,内存页集合B中包括内存页5、内存页6和内存页7,则内存页集合A和内存页集合B 相邻。当第二级缓存需要包括4个内存页的内存页集合时,内存页集合A和内存页集合B都不满足条件。因此将内存页集合A和内存页集合B合并得到内存页集合C,则内存页集合C中包括内存页3、内存页4、内存页5、内存页6和内存页7,此时可以从内存页集合C中拆分出包括4个内存页的内存页集合D 返回给第二级缓存。由上可以看出,及时地拆分及合并内存页集合,能够更高效地利用内存池现有空间,避免碎片化。
本申请实施例可以应用于合并内存页集合的任意场景下,例如,释放内存之后进行内存页集合合并的场景下。图7是本申请实施例提供的一种释放内存及合并内存页集合的流程图,参见图7,该方法包括:
701、计算机设备通过内存池将第三级缓存中的object分块分配给计算机设备中的应用使用。
702、当使用完毕后,计算机设备通过内存池将该object分块释放到第三级缓存中,此时该object分块在第三级缓存中处于空闲状态。
703、计算机设备通过内存池判断第三级缓存中的内存的大小是否超过阈值。
704、当第三级缓存中的内存超过阈值时,计算机设备通过内存池将处于空闲状态的object分块释放到第二级缓存的内存页集合中,此时该内存页集合中的该object分块处于空闲状态。
705、计算机设备通过内存池判断第二级缓存中的内存页集合是否完全空闲。
706、当计算机设备通过内存池确定第二级缓存中的某一内存页集合中的全部object分块均处于空闲状态时,将该内存页集合释放到第一级缓存中。此时第一级缓存中有了新的内存页集合,则计算机设备可以查询第一级缓存中是否包括与该内存页集合相邻的内存页集合,若查询到与该内存页集合相邻的内存页集合,则计算机设备通过内存池将相邻的内存页集合进行合并。
其中,计算机设备计算该内存页集合相邻的内存页标识。例如,内存页集合中包括内存页标识为6、7、8的3个内存页,则该内存页集合相邻的内存页标识为5和9。计算机设备通过查询数组和链表,确定该内存页标识为5和9对应的内存页集合,若对应的内存页集合为第一级缓存中处于空闲状态的内存页集合,则将相邻的内存页集合进行合并。
图8是本申请实施例提供的一种内存管理装置的结构示意图。参见图8,该装置包括:
第一获取模块801,用于获取待存储的第一内存页标识及对应的第一内存页集合标识,第一内存页集合中包括第一内存页;
关系建立模块802,用于建立第一内存页标识与第一内存页集合标识的映射关系;
元素确定模块803,用于在目标数组中确定第一内存页标识对应的目标元素,目标数组中的每个元素对应一个链表,且每个元素对应一个或多个内存页标识;
关系存储模块804,用于将映射关系存储于目标元素对应的目标链表中。
本申请实施例提供的内存管理装置,获取待存储的第一内存页标识及对应的第一内存页集合标识,第一内存页集合中包括第一内存页,建立第一内存页标识与第一内存页集合标识的映射关系,在目标数组中确定第一内存页标识对应的目标元素,目标数组中的每个元素对应一个链表,将映射关系存储于目标元素对应的目标链表中。因此本申请实施例提供了一种数组与链表结合的数据结构,来存储内存页标识与内存页集合标识的映射关系,仅需消耗该目标链表所占用的内存,实现按需申请,无需占用额外内存,可以降低存储内存页标识与内存页集合标识的映射关系所占用的内存,节省了内存空间。
可选地,参见图9,元素确定模块803,包括:
处理单元8031,用于对第一内存页标识和目标数组的元素个数进行处理,得到第一内存页标识对应的目标元素。
可选地,参见图9,装置还包括:
第二获取模块805,用于获取待查询的第一内存页标识;
元素确定模块806,用于在目标数组中确定第一内存页标识对应的目标元素;
第一查询模块807,用于在目标元素对应的目标链表中,查询第一内存页标识对应的第一内存页集合标识。
可选地,参见图9,目标链表中包括多个映射关系,第一查询模块807,包括:
关系确定单元8071,用于遍历目标链表中的多个映射关系,确定包括第一内存页标识的映射关系;
标识查询单元8072,用于查询映射关系中的第一内存页集合标识。
可选地,参见图9,第二获取模块805,包括:
指令接收单元8051,用于接收映射关系移除指令,映射关系移除指令包括第一内存页标识;
装置还包括:
关系移除模块808,用于将映射关系在目标链表中移除。
可选地,参见图9,内存页标识为数值,装置还包括:
标识确定模块809,用于确定第一内存页标识与第二内存页标识为相邻的数值;
第二查询模块810,用于查询第一内存页标识对应的第一内存页集合标识,确定第一内存页集合标识对应的第一内存页集合;
第二查询模块810,还用于查询第二内存页标识对应的第二内存页集合标识,确定第二内存页集合标识对应的第二内存页集合;
集合合并模块811,用于将第一内存页集合与第二内存页集合进行合并。
需要说明的是:上述实施例提供的内存管理装置在管理内存时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的内存管理装置与内存管理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图10示出了本申请一个示例性实施例提供的终端1000的结构示意图。终端1000可以用于执行上述内存管理方法中计算机设备所执行的步骤。
通常,终端1000包括有:处理器1001和存储器1002。
处理器1001可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1001可以采用DSP(Digital Signal Processing,数字信号处理)、 FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA (Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001可以在集成有GPU(Graphics Processing Unit,图像处理的交互器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1001还可以包括AI(Artificial Intelligence,人工智能)处理器,该 AI处理器用于处理有关机器学习的计算操作。
存储器1002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一条程序代码,该至少一条程序代码用于被处理器1001所具有以实现本申请中方法实施例提供的内存管理方法。
在一些实施例中,设备1000还可选包括有:***设备接口1003和至少一个***设备。处理器1001、存储器1002和***设备接口1003之间可以通过总线或信号线相连。各个***设备可以通过总线、信号线或电路板与***设备接口1003相连。具体地,***设备包括:射频电路1004、触摸显示屏1005、摄像头1006、音频电路1007、定位组件1008和电源1009中的至少一种。
***设备接口1003可被用于将I/O(Input/Output,输入/输出)相关的至少一个***设备连接到处理器1001和存储器1002。在一些实施例中,处理器1001、存储器1002和***设备接口1003被集成在同一芯片或电路板上;在一些其他实施例中,处理器1001、存储器1002和***设备接口1003中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1004用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1004包括:天线***、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1004可以通过至少一种无线通信协议来与其它设备进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G 及8G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1004还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1005用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1005是触摸显示屏时,显示屏1005还具有采集在显示屏1005的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1001进行处理。此时,显示屏1005 还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1005可以为一个,设置终端1000的前面板;在另一些实施例中,显示屏1005可以为至少两个,分别设置在终端1000的不同表面或呈折叠设计;在一些实施例中,显示屏1005可以是柔性显示屏,设置在终端1000的弯曲表面上或折叠面上。甚至,显示屏1005还可以设置成非矩形的不规则图形,也即异形屏。显示屏1005可以采用LCD(Liquid Crystal Display,液晶显示屏)、 OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1006用于采集图像或视频。可选地,摄像头组件1006包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端1000的前面板,后置摄像头设置在终端1000的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1006还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1007可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1001进行处理,或者输入至射频电路 1004以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1000的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1001或射频电路1004的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1007还可以包括耳机插孔。
定位组件1008用于定位终端1000的当前地理位置,以实现导航或LBS (LocationBased Service,基于位置的服务)。定位组件1008可以是基于美国的GPS(GlobalPositioning System,全球定位***)、中国的北斗***、俄罗斯的格雷纳斯***或欧盟的伽利略***的定位组件。
电源1009用于为终端1000中的各个组件进行供电。电源1009可以是交流电、直流电、一次性电池或可充电电池。当电源1009包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
本领域技术人员可以理解,图10中示出的结构并不构成对终端1000的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图11是本申请实施例提供的一种服务器的结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器 (Central ProcessingUnits,CPU)1101和一个或一个以上的存储器1102,其中,所述存储器1102中存储有至少一条程序代码,所述至少一条程序代码由所述处理器1101加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
服务器1100可以用于执行上述内存管理方法中计算机设备所执行的步骤。
本申请实施例还提供了一种用于管理内存的设备,该设备包括处理器和存储器,存储器中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行,以实现上述实施例的内存管理方法中所具有的操作。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行,以实现上述实施例的内存管理方法中所具有的操作。
本申请实施例还提供了一种计算机程序,该计算机程序包括至少一条程序代码,该至少一条程序代码由处理器加载并执行,以实现上述实施例的内存管理方法中所具有的操作。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请实施例的可选实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种内存管理方法,其特征在于,所述方法包括:
获取待存储的第一内存页标识及对应的第一内存页集合标识,第一内存页集合中包括第一内存页;
建立所述第一内存页标识与所述第一内存页集合标识的映射关系;
在目标数组中确定所述第一内存页标识对应的目标元素,所述目标数组中的每个元素对应一个链表,且所述每个元素对应一个或多个内存页标识;
将所述映射关系存储于所述目标元素对应的目标链表中。
2.根据权利要求1所述的方法,其特征在于,所述在目标数组中确定所述第一内存页标识对应的目标元素,包括:
对所述第一内存页标识和所述目标数组的元素个数进行处理,得到所述第一内存页标识对应的目标元素。
3.根据权利要求1所述的方法,其特征在于,所述将所述映射关系存储于所述目标元素对应的目标链表中之后,所述方法还包括:
获取待查询的所述第一内存页标识;
在所述目标数组中确定所述第一内存页标识对应的所述目标元素;
在所述目标元素对应的目标链表中,查询所述第一内存页标识对应的所述第一内存页集合标识。
4.根据权利要求3所述的方法,其特征在于,所述目标链表中包括多个映射关系,所述在所述目标元素对应的目标链表中,查询所述第一内存页标识对应的所述第一内存页集合标识,包括:
遍历所述目标链表中的所述多个映射关系,确定包括所述第一内存页标识的映射关系;
查询所述映射关系中的第一内存页集合标识。
5.根据权利要求3所述的方法,其特征在于,所述获取待查询的所述第一内存页标识,包括:
接收映射关系移除指令,所述映射关系移除指令包括所述第一内存页标识;
所述在所述目标元素对应的目标链表中,查询所述第一内存页标识对应的所述第一内存页集合标识之后,所述方法还包括:
将所述映射关系在所述目标链表中移除。
6.根据权利要求1所述的方法,其特征在于,内存页标识为数值,所述方法还包括:
确定所述第一内存页标识与第二内存页标识为相邻的数值;
查询所述第一内存页标识对应的所述第一内存页集合标识,确定所述第一内存页集合标识对应的第一内存页集合;
查询所述第二内存页标识对应的所述第二内存页集合标识,确定所述第二内存页集合标识对应的第二内存页集合;
将所述第一内存页集合与所述第二内存页集合进行合并。
7.一种内存管理装置,其特征在于,所述装置包括:
第一获取模块,用于获取待存储的第一内存页标识及对应的第一内存页集合标识,第一内存页集合中包括第一内存页;
关系建立模块,用于建立所述第一内存页标识与所述第一内存页集合标识的映射关系;
元素确定模块,用于在目标数组中确定所述第一内存页标识对应的目标元素,所述目标数组中的每个元素对应一个链表,且所述每个元素对应一个或多个内存页标识;
关系存储模块,用于将所述映射关系存储于所述目标元素对应的目标链表中。
8.根据权利要求7所述的装置,其特征在于,所述元素确定模块,包括:
处理单元,用于对所述第一内存页标识和所述目标数组的元素个数进行处理,得到所述第一内存页标识对应的目标元素。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于获取待查询的所述第一内存页标识;
元素确定模块,用于在所述目标数组中确定所述第一内存页标识对应的所述目标元素;
第一查询模块,用于在所述目标元素对应的目标链表中,查询所述第一内存页标识对应的所述第一内存页集合标识。
10.根据权利要求9所述的装置,其特征在于,所述目标链表中包括多个映射关系,所述第一查询模块,包括:
关系确定单元,用于遍历所述目标链表中的所述多个映射关系,确定包括所述第一内存页标识的映射关系;
标识查询单元,用于查询所述映射关系中的第一内存页集合标识。
11.根据权利要求9所述的装置,其特征在于,所述第二获取模块,包括:
指令接收单元,用于接收映射关系移除指令,所述映射关系移除指令包括所述第一内存页标识;
所述装置还包括:
关系移除模块,用于将所述映射关系在所述目标链表中移除。
12.根据权利要求7所述的装置,其特征在于,内存页标识为数值,所述装置还包括:
标识确定模块,用于确定所述第一内存页标识与第二内存页标识为相邻的数值;
第二查询模块,用于查询所述第一内存页标识对应的所述第一内存页集合标识,确定所述第一内存页集合标识对应的第一内存页集合;
所述第二查询模块,还用于查询所述第二内存页标识对应的所述第二内存页集合标识,确定所述第二内存页集合标识对应的第二内存页集合;
集合合并模块,用于将所述第一内存页集合与所述第二内存页集合进行合并。
13.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现如权利要求1至6任一所述的内存管理方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现如权利要求1至6任一所述的内存管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010161659.0A CN111352863B (zh) | 2020-03-10 | 2020-03-10 | 内存管理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010161659.0A CN111352863B (zh) | 2020-03-10 | 2020-03-10 | 内存管理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352863A true CN111352863A (zh) | 2020-06-30 |
CN111352863B CN111352863B (zh) | 2023-09-01 |
Family
ID=71192630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010161659.0A Active CN111352863B (zh) | 2020-03-10 | 2020-03-10 | 内存管理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111352863B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148736A (zh) * | 2020-09-23 | 2020-12-29 | 北京字节跳动网络技术有限公司 | 缓存数据的方法、设备及存储介质 |
CN112269665A (zh) * | 2020-12-22 | 2021-01-26 | 北京金山云网络技术有限公司 | 内存的处理方法和装置、电子设备和存储介质 |
CN113010228A (zh) * | 2021-03-19 | 2021-06-22 | Oppo广东移动通信有限公司 | 内存处理方法、装置、电子设备和计算机可读存储介质 |
CN113296961A (zh) * | 2021-07-22 | 2021-08-24 | 广州中望龙腾软件股份有限公司 | 基于gpu的内存动态分配方法、装置及内存链表 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140173183A1 (en) * | 2012-12-18 | 2014-06-19 | SK Hynix Inc. | Data storage device and method of operating the same |
CN104035822A (zh) * | 2014-05-28 | 2014-09-10 | 中国科学院计算技术研究所 | 一种低开销的高效内存去冗余方法及*** |
CN104731799A (zh) * | 2013-12-20 | 2015-06-24 | ***股份有限公司 | 内存数据库管理装置 |
CN105930280A (zh) * | 2016-05-27 | 2016-09-07 | 诸葛晴凤 | 一种面向非易失性内存的高效的页面组织和管理方法 |
CN106095693A (zh) * | 2016-05-31 | 2016-11-09 | 国家计算机网络与信息安全管理中心 | 一种面向非固定包长的无锁化多链内存管理方法 |
WO2016187974A1 (zh) * | 2015-05-25 | 2016-12-01 | 中兴通讯股份有限公司 | 一种存储空间管理方法及装置 |
US20180052765A1 (en) * | 2016-08-16 | 2018-02-22 | Sap Se | Self tuning adaptive bucket memory manager |
US20180300243A1 (en) * | 2017-04-12 | 2018-10-18 | International Business Machines Corporation | Lightweight Mechanisms for Selecting Infrequently Executed Methods for Eviction from Code Cache |
US20180307428A1 (en) * | 2016-10-08 | 2018-10-25 | Tencent Technology (Shenzhen) Company Limited | Data storage method, electronic device, and computer non-volatile storage medium |
CN109508235A (zh) * | 2018-09-28 | 2019-03-22 | 深圳市紫光同创电子有限公司 | 一种内存池管理方法、装置及计算机可读存储介质 |
US20190220391A1 (en) * | 2016-09-28 | 2019-07-18 | Huawei Technologies Co., Ltd. | Memory management method and device |
US20190220418A1 (en) * | 2016-09-28 | 2019-07-18 | Huawei Technologies Co., Ltd. | Memory Management Method and Apparatus |
CN110674051A (zh) * | 2019-09-24 | 2020-01-10 | 中国科学院微电子研究所 | 一种数据存储方法及装置 |
CN110674052A (zh) * | 2019-09-30 | 2020-01-10 | 广州虎牙科技有限公司 | 内存管理方法、服务器及可读存储介质 |
-
2020
- 2020-03-10 CN CN202010161659.0A patent/CN111352863B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140173183A1 (en) * | 2012-12-18 | 2014-06-19 | SK Hynix Inc. | Data storage device and method of operating the same |
CN104731799A (zh) * | 2013-12-20 | 2015-06-24 | ***股份有限公司 | 内存数据库管理装置 |
CN104035822A (zh) * | 2014-05-28 | 2014-09-10 | 中国科学院计算技术研究所 | 一种低开销的高效内存去冗余方法及*** |
WO2016187974A1 (zh) * | 2015-05-25 | 2016-12-01 | 中兴通讯股份有限公司 | 一种存储空间管理方法及装置 |
CN106294190A (zh) * | 2015-05-25 | 2017-01-04 | 中兴通讯股份有限公司 | 一种存储空间管理方法及装置 |
CN105930280A (zh) * | 2016-05-27 | 2016-09-07 | 诸葛晴凤 | 一种面向非易失性内存的高效的页面组织和管理方法 |
CN106095693A (zh) * | 2016-05-31 | 2016-11-09 | 国家计算机网络与信息安全管理中心 | 一种面向非固定包长的无锁化多链内存管理方法 |
US20180052765A1 (en) * | 2016-08-16 | 2018-02-22 | Sap Se | Self tuning adaptive bucket memory manager |
US20190220391A1 (en) * | 2016-09-28 | 2019-07-18 | Huawei Technologies Co., Ltd. | Memory management method and device |
US20190220418A1 (en) * | 2016-09-28 | 2019-07-18 | Huawei Technologies Co., Ltd. | Memory Management Method and Apparatus |
US20180307428A1 (en) * | 2016-10-08 | 2018-10-25 | Tencent Technology (Shenzhen) Company Limited | Data storage method, electronic device, and computer non-volatile storage medium |
US20180300243A1 (en) * | 2017-04-12 | 2018-10-18 | International Business Machines Corporation | Lightweight Mechanisms for Selecting Infrequently Executed Methods for Eviction from Code Cache |
CN109508235A (zh) * | 2018-09-28 | 2019-03-22 | 深圳市紫光同创电子有限公司 | 一种内存池管理方法、装置及计算机可读存储介质 |
CN110674051A (zh) * | 2019-09-24 | 2020-01-10 | 中国科学院微电子研究所 | 一种数据存储方法及装置 |
CN110674052A (zh) * | 2019-09-30 | 2020-01-10 | 广州虎牙科技有限公司 | 内存管理方法、服务器及可读存储介质 |
Non-Patent Citations (2)
Title |
---|
崔更申;黄廷辉;王力;: "一种通用的嵌入式操作***内存保护设计", 计算机工程, no. 24 * |
徐延东;华蓓;: "面向GPU的内存管理与应用", 电子技术, no. 07 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148736A (zh) * | 2020-09-23 | 2020-12-29 | 北京字节跳动网络技术有限公司 | 缓存数据的方法、设备及存储介质 |
CN112148736B (zh) * | 2020-09-23 | 2024-03-12 | 抖音视界有限公司 | 缓存数据的方法、设备及存储介质 |
CN112269665A (zh) * | 2020-12-22 | 2021-01-26 | 北京金山云网络技术有限公司 | 内存的处理方法和装置、电子设备和存储介质 |
CN112269665B (zh) * | 2020-12-22 | 2021-05-11 | 北京金山云网络技术有限公司 | 内存的处理方法和装置、电子设备和存储介质 |
CN113010228A (zh) * | 2021-03-19 | 2021-06-22 | Oppo广东移动通信有限公司 | 内存处理方法、装置、电子设备和计算机可读存储介质 |
CN113296961A (zh) * | 2021-07-22 | 2021-08-24 | 广州中望龙腾软件股份有限公司 | 基于gpu的内存动态分配方法、装置及内存链表 |
CN113296961B (zh) * | 2021-07-22 | 2021-11-19 | 广州中望龙腾软件股份有限公司 | 基于gpu的内存动态分配方法、装置及内存链表 |
Also Published As
Publication number | Publication date |
---|---|
CN111352863B (zh) | 2023-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111352863B (zh) | 内存管理方法、装置、设备及存储介质 | |
CN108881030B (zh) | 灰度发布场景下的路由方法及装置 | |
US10235047B2 (en) | Memory management method, apparatus, and system | |
CN111953811B (zh) | 站点访问方法、站点注册方法、装置、设备及存储介质 | |
CN111679921A (zh) | 内存共享方法、内存共享装置及终端设备 | |
CN112035410A (zh) | 日志存储方法、装置、节点设备及存储介质 | |
CN106713250B (zh) | 基于分布式***的数据访问方法和装置 | |
CN114244595A (zh) | 权限信息的获取方法、装置、计算机设备及存储介质 | |
CN103716383A (zh) | 一种访问共享资源的方法及装置 | |
JP6674460B2 (ja) | 不均一メモリアーキテクチャにおける改善されたレイテンシのためのシステムおよび方法 | |
CN113392863A (zh) | 一种机器学习训练数据集的获取方法、获取装置及终端 | |
JP6676052B2 (ja) | 不均一メモリアーキテクチャにおける改善されたレイテンシを可能にするためのシステムおよび方法 | |
CN115756868A (zh) | 内存分配方法、装置、设备、存储介质及计算机程序产品 | |
CN113946624A (zh) | 分布式集群、信息处理方法、装置、电子设备及存储介质 | |
CN114328377A (zh) | 元数据管理方法和电子设备 | |
CN114722021A (zh) | 元数据管理方法和电子设备 | |
CN114116072A (zh) | 一种共享库的复用方法及电子设备 | |
CN117688104B (zh) | 请求处理方法、装置、电子设备及存储介质 | |
CN117555884B (zh) | 数据页的读取方法、装置、设备及可读存储介质 | |
CN114374690B (zh) | 一种文件共享方法、通信***和电子设备 | |
CN116405538A (zh) | 网络代理方法、装置、服务器及存储介质 | |
CN117075966B (zh) | 指令处理方法、装置、设备及可读存储介质 | |
CN116668372B (zh) | 一种流量控制方法和相关装置 | |
CN115861513B (zh) | 数据渲染方法、装置、计算机及可读存储介质 | |
CN113282242B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40024837 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |