CN110532198B - 一种存储空间分配的方法及装置 - Google Patents
一种存储空间分配的方法及装置 Download PDFInfo
- Publication number
- CN110532198B CN110532198B CN201910849525.5A CN201910849525A CN110532198B CN 110532198 B CN110532198 B CN 110532198B CN 201910849525 A CN201910849525 A CN 201910849525A CN 110532198 B CN110532198 B CN 110532198B
- Authority
- CN
- China
- Prior art keywords
- storage
- block
- recovery
- storage block
- memory
- 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.)
- Active
Links
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
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- 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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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)
- Memory System (AREA)
Abstract
本申请提供一种存储空间分配的方法及装置,其中所述方法包括:建立存储分区对应的存储块回收链表,存储块回收链表包括回收存储块的位置以及容量;接收存储分配请求,存储分配请求包括对齐信息和请求存储容量;根据对齐信息确定存储分配请求对应的存储分区,在存储分区剩余的存储容量小于请求存储容量的情况下,遍历存储块回收链表,查看是否存在存储容量大于等于请求存储容量的回收存储块;若是,在回收存储块中为存储分配请求配置对应的存储块,并更新存储块回收链表;若否,为存储分配请求重新配置另一对应的存储分区中的存储块,从而优先利用回收存储块进行存储空间的分配,增加回收存储块的利用效率,获得较优的存储空间执行效能。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种存储空间分配的方法及装置、计算设备和计算机可读存储介质。
背景技术
对于计算机中,存储空间包括内存和显存。
内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。内存为与CPU进行沟通的桥梁,计算机中所有程序的运行都是在内存中进行的。
显存也被叫做显示内存、帧缓存,它是用来存储显示芯片处理过或者即将读取的渲染数据。如同计算机的内存一样,显存是用来存储图形数据的硬件。为了保持画面流畅,要输出和要处理的图像数据必须通过显存来保存,达到缓冲效果,再交由显示芯片和CPU调配,最后把运算结果转化为图形输出到显示器上。
无论是内存还是显存,作为一个连续的空间,CPU运行的程序每次需要使用内存或显存时,会发送一个分配请求至系统,系统会根据分配请求的存储空间大小分配相应的存储块。当程序不再继续使用存储空间时,分配至该程序的存储块则被释放并回收。
在分配的过程中,内存或显存的存储空间是连续分配的,但是在存储块回收后,很容易形成碎片,影响存储块的使用。尤其是游戏引擎的内存分配领域,现有技术的分配机制不限制内存或显存的分配次数和大小,所以容易出现很多内存或显存分配不合理的状况,比如内存不足、存储碎片多、分配不连续导致访问性能差等问题。
发明内容
有鉴于此,本申请实施例提供了一种存储空间分配的方法及装置、计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
本申请实施例提供了一种存储空间分配的方法,所述方法包括:
建立存储分区对应的存储块回收链表,其中,所述存储分区包括至少一个存储块,所述存储块回收链表包括回收存储块的位置以及容量;
接收存储分配请求,其中,所述存储分配请求包括对齐信息和请求存储容量;
根据所述对齐信息确定所述存储分配请求对应的存储分区,在所述存储分区剩余的存储容量小于所述请求存储容量的情况下,遍历存储块回收链表,查看是否存在存储容量大于等于所述请求存储容量的回收存储块;
若是,在所述回收存储块中为所述存储分配请求配置对应的存储块,并更新所述存储块回收链表;
若否,为所述存储分配请求重新配置另一对应的存储分区中的存储块。
可选地,建立存储分区对应的存储块回收链表,包括:
根据所述存储分区中被回收存储块的位置以及容量,生成存储块回收链表中的节点,其中,所述节点与所述回收存储块一一对应。
可选地,根据所述存储分区中被回收存储块的位置以及容量,生成存储块回收链表中的节点,包括:
在所述存储分区中生成回收存储块的情况下,遍历所述存储块回收链表的节点,查看是否存在所述节点对应的回收存储块与当前的回收存储块相邻;
若是,将当前的回收存储块与相邻的回收存储块合并,并修改所述节点对应的回收存储块的位置以及容量;
若否,根据所述当前的回收存储块的位置以及容量,在所述存储块回收链表中新增一个对应的节点。
可选地,将当前的回收存储块与相邻的回收存储块合并,并修改所述节点对应的回收存储块的位置以及容量,包括:
若所述当前的回收存储块位于相邻的回收存储块之后,保持所述节点对应的回收存储块的起始地址,修改所述节点对应的回收存储块的容量为当前的回收存储块与相邻的回收存储块的容量之和;
若所述当前的回收存储块位于相邻的回收存储块之前,将所述节点对应的回收存储块的起始地址修改为所述当前的回收存储块的起始地址,修改所述节点对应的回收存储块的容量为当前的回收存储块与相邻的回收存储块的容量之和;
若当前的回收存储块分别与前一个回收存储块和后一个回收存储块相邻,保持前一个节点对应的回收存储块的起始地址,修改前一个所述节点对应的回收存储块的容量为当前的回收存储块、前一个回收存储块以及后一个回收存储块的容量之和,并删除后一个节点。
可选地,所述方法还包括:在所述存储分配请求对应的存储分区剩余的存储容量大于等于所述请求存储容量的情况下,在所述存储分配请求对应的存储分区中按照先后排列顺序,为所述存储分配请求分配存储块。
可选地,在所述存储分配请求对应的存储分区中按照先后排列顺序,为所述存储分配请求分配存储块,包括:
确定上一个存储块的结束地址,将所述上一个存储块的结束地址相邻的下一个存储地址作为所述存储分配请求对应的存储块的起始地址;
根据所述存储分配请求确定对应的所述存储块的容量;
根据所述存储块的起始地址和容量为所述存储分配请求分配存储块。
可选地,在所述回收存储块中为所述存储分配请求配置对应的存储块,并更新所述存储块回收链表,包括:
将所述回收存储块的起始地址作为所述存储分配请求对应的存储块的起始地址;
根据所述存储分配请求确定对应的所述存储块的容量;
根据所述存储块的起始地址和容量为所述存储分配请求分配存储块,并确定剩余的回收存储块的起始地址;
根据所述剩余的回收存储块的起始地址以及剩余容量,更新所述存储块回收链表。
可选地,所述方法还包括:
记录所述存储分区的存储分区序号以及所述存储块的偏移信息,以确定所述存储块的位置;
记录所述存储分区的存储分区序号以及所述回收存储块的偏移信息,以确定所述回收存储块的位置。
可选地,所述方法还包括:
在所述存储分区大于阈值或用于临时存储的情况下,为所述存储分区添加标记位;
在接收到存储分配请求的情况下,将添加有标记位的所述存储分区配置给所述存储分配请求。
本申请实施例公开了一种存储空间分配的装置,包括:
回收链表生成模块,被配置为建立存储分区对应的存储块回收链表,其中,所述存储分区包括至少一个存储块,所述存储块回收链表包括回收存储块的位置以及容量;
分配请求接收模块,被配置为接收存储分配请求,其中,所述存储分配请求包括对齐信息和请求存储容量;
回收存储块查找模块,被配置为根据所述对齐信息确定所述存储分配请求对应的存储分区,在所述存储分区剩余的存储容量小于所述请求存储容量的情况下,遍历存储块回收链表,查看是否存在存储容量大于等于所述存储分配请求的存储容量的回收存储块,若是,执行第一处理模块,若否,执行第二处理模块;
第一处理模块,被配置为在所述回收存储块中为所述存储分配请求配置对应的存储块,并更新所述存储块回收链表;
第二处理模块,被配置为所述存储分配请求重新配置另一对应的存储分区中的存储块。
本申请实施例公开了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现如上所述的存储空间分配方法的步骤。
本申请实施例公开了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如上所述的存储空间分配方法的步骤。
本申请提供的存储空间分配的方法及装置,通过建立存储分区对应的存储块回收链表,在接收存储分配请求的情况下,可以先根据对齐信息确定存储分配请求对应的存储分区,然后再对存储分区进行分配,在查看存储分区剩余的存储容量小于请求存储容量的情况下,遍历存储块回收链表,查看是否存在存储容量大于等于请求存储容量的回收存储块;若是,在回收存储块中为存储分配请求配置对应的存储块,并更新存储块回收链表;若否,为存储分配请求重新配置另一对应的存储分区中的存储块,从而优先利用回收存储块进行存储空间分配,增加回收存储块的利用效率,以获得较优的存储空间执行效能。
其次,本实施例的方法在生成新的回收存储块的情况下,自动将其与相邻的回收存储块合并,可以进一步减少存储块的数量,减少存储空间中的碎片,并且合并后可以生成一个较大的回收存储块,在接收到存储分配请求的存储容量较大的情况下,可以直接将合并后的回收存储块分配给存储分配请求,有效提高回收存储块的利用效率。
附图说明
图1是本申请一实施例的计算设备的结构示意图;
图2是本申请一实施例的存储空间分配的方法的流程示意图;
图3是本申请另一实施例的存储空间分配的方法的流程示意图;
图4是本申请另一实施例的存储空间的具体分配示意图;
图5是本申请一实施例的存储空间分配的装置的结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
存储空间分配:包括静态存储空间分配和动态存储空间分配。动态存储空间分配是指在程序运行时为程序中的变量分配存储空间,它完全由应用程序自己进行存储空间的分配和回收。动态存储空间分配不像静态存储空间分配那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。
在本申请中,提供了一种存储空间分配的方法及装置、计算设备和计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1是示出了根据本说明书一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。
计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备100的上述部件以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。
其中,处理器120可以执行图2所示方法中的步骤。图2是示出了根据本申请一实施例的存储空间分配的方法的示意性流程图,包括步骤201至步骤204。
201、建立存储分区对应的存储块回收链表,其中,所述存储分区包括至少一个存储块,所述存储块回收链表包括回收存储块的位置以及容量。
其中,对于存储块的位置,记录存储分区的存储分区序号以及存储块的偏移信息,以确定存储块的位置;对于回收存储块的位置:记录存储分区的存储分区序号以及回收存储块的偏移信息,以确定回收存储块的位置。
为了便于存储空间的分配,将内存或显存划分为多个依次排列的存储分区。多个存储分区之间的存储容量可以不同,也可以相同。优选设置不同存储容量的存储分区,以可以容纳不同大小的数据。
对于存储分区,包括对齐信息和存储容量。例如设置存储分区1为128kB,16byte对齐;存储分区2为128kB,32byte对齐;存储分区3为512kB,64byte对齐;存储分区4为1MB,256byte对齐;存储分区5为16MB,32byte对齐。
在接收到存储分配请求的情况下,系统执行存储分配程序,为该存储分配请求分配对应的存储空间,从而在存储分区中形成对应该存储分配请求的存储块。该系统可以为多种,例如为一游戏引擎。
一般情况下,系统在接收到存储分配请求的情况下,会依次查找存储分区有无对应的存储空间分配给存储分配请求。若系统未找到大小足够的存储分区,则拒绝为该存储分配请求分配对应的存储空间。
例如在接收到存储分配请求Q1的存储容量为16kB的情况下,系统在存储分区1中为该存储分配请求分配对应的存储空间,并形成存储块11。在继续接收到存储分配请求Q2的存储容量为32kB的情况下,系统在存储分区1中为该存储分配请求分配对应的存储空间,并形成存储块12。在继续接收到存储分配请求Q3的存储容量为16kB的情况下,系统在存储分区1中为该存储分配请求分配对应的存储空间,并形成存储块13。
在不再使用存储块12的情况下,将存储块12释放并回收,则存储块12成为回收存储块12。将回收存储块12的位置以及容量写入存储块回收链表中。
具体地,步骤201包括:根据所述存储分区中被回收存储块的位置以及容量,生成存储块回收链表中的节点,其中,所述节点与所述回收存储块一一对应。
需要注意的是,本实施例中,并非对每个回收存储块均建立对应的节点,对于相邻的回收存储块,本实施例的方法可以合并回收存储块,形成一个合并后的较大的回收存储块,有效提高回收存储块的利用效率。
具体地,根据所述存储分区中被回收存储块的位置以及容量,生成存储块回收链表中的节点,包括:
S2011、在所述存储分区中生成回收存储块的情况下,遍历所述存储块回收链表的节点,查看是否存在所述节点对应的回收存储块与当前的回收存储块相邻,若是,执行步骤S2012,若否,执行步骤S2013。
S2012、将当前的回收存储块与相邻的回收存储块合并,并修改所述节点对应的回收存储块的位置以及容量。
步骤S2012包括:
若当前的回收存储块位于相邻的回收存储块之后,保持所述节点对应的回收存储块的起始地址,修改所述节点对应的回收存储块的容量为当前的回收存储块与相邻的回收存储块的容量之和;
若当前的回收存储块位于相邻的回收存储块之前,将所述节点对应的回收存储块的起始地址修改为所述当前的回收存储块的起始地址,修改所述节点对应的回收存储块的容量为当前的回收存储块与相邻的回收存储块的容量之和;
若当前的回收存储块分别与前一个回收存储块和后一个回收存储块相邻,保持前一个节点对应的回收存储块的起始地址,修改前一个所述节点对应的回收存储块的容量为当前的回收存储块、前一个回收存储块以及后一个回收存储块的容量之和,并删除后一个节点。
S2013、根据所述当前的回收存储块的位置以及容量,在所述存储块回收链表中新增一个对应的节点。
例如存储分区1中包括多个存储块11~18,其中存储块12、存储块16以及存储块18为回收存储块。每个回收存储块对应于存储块回收链表的节点A12、A16和A18。每个存储块的起始地址、容量以及存储块回收链表的节点参见表1。其中,B11+C11=B12,B12+C12=B13……依次类推。
存储分区1中新生成一回收存储块14,遍历所述存储块回收链表的节点A12、A16和A18,在确定不存在节点对应的回收存储块与当前的回收存储块相邻的情况下,在存储块回收链表中新增一个与回收存储块14对应的节点A14,参见表1。
表1
存储分区1中新生成一回收存储块11,遍历所述存储块回收链表的节点A12、A14、A16和A18,确定当前的回收存储块11位于相邻的回收存储块12之前,将所述节点A12对应的回收存储块12的起始地址B12修改为当前的回收存储块11的起始地址B11,修改节点A12对应的回收存储块的容量为当前的回收存储块11与相邻的回收存储块12的容量之和。经过此步骤的处理,回收存储块11与回收存储块12合并,且对应的存储块回收链表的节点A12的起始地址为回收存储块11的起始地址。新生成的存储块回收链表的节点参见表2。
表2
存储分区1中新生成一回收存储块15,遍历所述存储块回收链表的节点A12、A14、A16和A18,确定当前的回收存储块15位于相邻的回收存储块14和16之间。保持前一个节点A14对应的回收存储块的起始地址B14,修改前一个节点A14对应的回收存储块的容量为当前的回收存储块15、前一个回收存储块14以及后一个回收存储块16的容量之和,并删除后一个节点A16。经过此步骤的处理,回收存储块14~16合并,且对应的新生成的节点A14的起始地址为回收存储块14的起始地址。新生成的存储块回收链表的节点参见表3。
表3
202、接收存储分配请求,其中,所述存储分配请求包括对齐信息和请求存储容量。
例如,当前的存储分配请求一个对齐信息128byte请求存储容量为4MB的内存块,那么在后续步骤,会根据存储分配请求直接去找一个对齐信息为128byte的内存分区尝试分配。这样的内存分区可能属于一个8MB空间的内存分区,可能是一个16MB的内存分区。
203、根据所述对齐信息确定所述存储分配请求对应的存储分区,在所述存储分区剩余的存储容量小于存储分配请求的存储容量的情况下,遍历存储块回收链表,查看是否存在存储容量大于等于所述存储分配请求的存储容量的回收存储块;若是,执行步骤204,若否,执行步骤205。
本实施例中,在存储分区剩余的存储容量小于存储分配请求的存储容量的情况下,并不去直接查找新的存储分区,而是先查找是否有回收存储块可以满足存储分配请求,增加回收存储块的利用效率,以获得较优的存储执行效能。
具体地,本步骤中的遍历存储块回收链表,指的是遍历存储块回收链表中的各个节点。将每个节点对应的回收存储块的存储容量与存储分配请求的存储容量进行比较。
204、在所述回收存储块中为所述存储分配请求配置对应的存储块,并更新所述存储块回收链表。
具体地,步骤204包括下述步骤S2041~S2044:
S2041、将所述回收存储块的起始地址作为所述存储分配请求对应的存储块的起始地址。
S2042、根据所述存储分配请求确定对应的所述存储块的容量。
S2043、根据所述存储块的起始地址和容量为所述存储分配请求分配存储块,并确定剩余的回收存储块的起始地址。
S2044、根据所述剩余的回收存储块的起始地址以及剩余容量,更新所述存储块回收链表。
以一个回收存储块为32kB为例,起始地址为L1。若存储分配请求的存储容量为6kB,则该存储分配请求对应的存储块的起始地址为L1,容量即为6kB,且剩余的回收存储块的起始地址为L2(L1+6kB)。那么,更新回收存储块的起始地址为L2,容量为26kB。
205、为所述存储分配请求重新配置另一存储分区中的存储块。
对于步骤205中的情形,该存储分区已经不能满足存储分配请求的需要,则需要查找其他的存储分区是否可以满足存储分配请求的存储容量。
若所有其他的存储分区均无法满足存储分配请求的存储容量,则拒绝存储分配请求。
本申请提供的存储空间分配的方法,通过建立存储分区对应的存储块回收链表,在接收存储分配请求的情况下,查看存储分区剩余的存储容量小于存储分配请求的存储容量,先是根据存储块回收链表查找回收存储块中是否可以进行分配,若可以分配,则将回收存储块分配给对应的存储分配请求,若不可以分配,再为存储分配请求重新配置另一存储分区中的存储块,从而优先利用回收存储块进行存储空间分配,增加回收存储块的利用频率,以获得较优的内存或显存的执行效能。相比现有技术,本实施例的存储空间的使用效率大幅提高,存储空间的调用速度也有明显提升。
其次,本实施例的方法在生成新的回收存储块的情况下,自动将其与相邻的回收存储块合并,可以进一步减少存储块的数量,减少内存或显存中的碎片,并且合并后可以生成一个较大的回收存储块,在接收到存储分配请求的存储容量较大的情况下,可以直接将合并后的回收存储块分配给存储分配请求,有效提高回收存储块的利用效率。
本申请实施例公开了一种存储空间分配的方法,参见图3,包括:
301、建立存储分区对应的存储块回收链表,其中,所述存储分区包括至少一个存储块,所述存储块回收链表包括回收存储块的位置以及容量。
其中,对于存储块的位置,记录存储分区的存储分区序号以及存储块的偏移信息,以确定存储块的位置;对于回收存储块的位置:记录存储分区的存储分区序号以及回收存储块的偏移信息,以确定回收存储块的位置。
对于步骤301的具体解释,可以参见前述实施例的步骤201,在此便不再赘述。
302、接收存储分配请求,其中,所述存储分配请求包括对齐信息和请求存储容量。
303、根据所述对齐信息确定所述存储分配请求对应的存储分区,判断所述存储分区剩余的存储容量是否小于存储分配请求的存储容量,若否,执行步骤304,如是,执行步骤305。
304、在所述存储分区中按照先后排列顺序,为存储分配请求分配存储块。
具体地,步骤304包括下述步骤S3041~S3043:
S3041、确定上一个存储块的结束地址,将所述上一个存储块的结束地址相邻的下一个存储地址作为所述存储分配请求对应的存储块的起始地址。
S3042、根据所述存储分配请求确定对应的所述存储块的容量。
S3043、根据所述存储块的起始地址和容量为所述存储分配请求分配存储块。
根据上一个存储块的起始地址和容量,可以确定上一个存储块的结束地址。例如,对于存储分区1来说,上一个存储块的结束地址为L3,将L3相邻的下一个存储地址L4作为存储分配请求对应的存储块的起始地址。
通过步骤304,按照先后排列顺序为存储分配请求分配存储块,可以避免生成多余的存储块,避免存储空间的浪费。
305、遍历存储块回收链表,查看是否存在存储容量大于等于所述存储分配请求的存储容量的回收存储块,若是,执行步骤306,若否,执行步骤310。
306、将所述回收存储块的起始地址作为存储分配请求对应的存储块的起始地址。
307、根据所述存储分配请求确定对应的所述存储块的容量。
308、根据所述存储块的起始地址和容量为所述存储分配请求分配存储块,并确定剩余的回收存储块的起始地址。
309、根据所述剩余的回收存储块的起始地址以及剩余容量,更新所述存储块回收链表。
310、为所述存储分配请求重新配置另一对应的存储分区中的存储块。
对于步骤305~310的具体解释,可以参见前述实施例步骤203~205的详细内容,在此便不再赘述。
另外,对于一些存储大块数据或用于临时存储数据的存储空间,为了避免存储空间空洞,本实施例的存储空间分配的方法还包括:
在所述存储分区大于阈值或用于临时存储的情况下,为所述存储分区添加标记位;在接收到存储分配请求的情况下,将添加有标记位的所述存储分区配置给所述存储分配请求。
为了进一步地对本实施例的存储空间分配的方法进行说明,本实施例根据一内存的具体分配为例进行说明。
参见图4,将内存进行分区,分为n个区,分别为存储分区1、存储分区2……存储分区n,并为每个存储分区建立对应的存储块回收链表。每个存储分区的大小可以根据需求设置。例如设置存储分区1为64kB,对齐信息为16byte;设置存储分区2为256kB,对齐信息为16byte;存储分区3为512kB,对齐信息为64byte;……存储分区n为10MB,对齐信息为128byte等。
存储分区1包括多个存储块,图4中示出了存储分区1中包括的存储块11为8kB、存储块12为4kB、存储块13为4kB、存储块14为16kB、存储块15为8kB,其中,存储块14为回收存储块。
存储分区2包括多个存储块,图4中示出了存储分区2中包括的存储块21为8kB、存储块22为24kB、存储块23为16kB,其中存储块22为回收存储块。
存储分区3包括多个存储块,图4中示出了存储分区3中包括的存储块31为8kB、存储块32为6kB、存储块33为6kB,存储块34为10kB、存储块35为4kB、存储块36为4kB。其中,存储块32和存储块34为回收存储块。
存储分区n添加标记位,存储分区n用于临时存储或大数据的存储。对于存储分区n,在接收到存储分配请求的情况下,将存储分区n整体配置给存储分配请求,并不进行存储块的分配。在不使用存储分区n的情况下,将存储分区n整体释放并回收。
在接收到存储分配请求Q41的存储容量为16kB,对齐信息为16byte的情况下,确定存储分区1的剩余的存储容量24kB大于16kB,则在存储分区1中,在存储块15之后为该存储分配请求分配存储块16,存储分区1还剩余存储容量为8kB。
在接收到存储分配请求Q42的存储容量为10kB,对齐信息为16byte的情况下,确定存储分区1的剩余的存储容量8kB小于10kB,则遍历存储分区1的存储块回收链表,确定回收存储块14的存储容量16kB大于存储分配请求Q42的存储容量10kB,则在回收存储块14中为存储分配请求Q42配置对应的存储块141,并确定剩余的回收存储块的起始地址。根据剩余的回收存储块的起始地址以及剩余容量6kB,更新存储块回收链表。
在接收到存储分配请求Q43的存储容量为200kB,对齐信息为16byte的情况下,确定存储分区1的剩余的存储容量8kB小于200kB,则遍历存储分区1的存储块回收链表,最终确定没有回收存储块的存储容量大于存储分配请求Q43的存储容量,也即是说,存储分区1满足不了存储分配请求Q43的需求。然后,继续查找存储分区2的剩余存储容量是否大于200kB。存储分区2的剩余存储容量为208kB,则存储分区2的剩余存储容量可以满足存储分配请求Q43的需求,则在存储块23之后为该存储分配请求分配存储块24,存储分区2还剩余存储容量为8kB。
在接收到存储分配请求Q44的存储容量为200kB,对齐信息为64byte的情况下,则确定对应的存储分区为存储分区3,并在存储分区3中,在存储块36之后为该存储分配请求Q44分配存储块37。
以上为本实施例的存储空间分配的示例性说明。下面对本实施例的存储空间回收进行示例性的说明。
参见图4的存储分区3,存储分区3对应的存储块回收链表的节点包括A32和A34,分别对应回收存储块32和34。
在存储分区3中生成新的回收存储块36的情况下,遍历存储块回收链表的节点A32和A34,确定回收存储块36不与回收存储块32和34相邻,则根据当前的回收存储块36的位置以及容量,在存储块回收链表中新增一个对应的节点A36。
在存储分区3中生成新的回收存储块33的情况下,遍历存储块回收链表的节点A32、A34和A36,确定回收存储块33与回收存储块32和34相邻,则将回收存储块33与相邻的回收存储块32以及34合并,并修改节点A32对应的回收存储块的位置以及容量。
对于回收存储块的合并以及修改节点修改的具体步骤,在前述实施例中已经详述,在此便不再赘述。
本申请提供的存储空间分配的方法,通过建立存储分区对应的存储块回收链表,在接收存储分配请求的情况下,查看存储分区剩余的存储容量小于存储分配请求的存储容量,先是根据存储块回收链表查找回收存储块中是否可以进行分配,若可以分配,则将回收存储块分配给对应的存储分配请求,若不可以分配,再为存储分配请求重新配置另一存储分区中的存储块,从而优先利用回收存储块进行存储分配,增加回收存储块的利用效率,以获得较优的存储空间执行效能。
其次,本实施例的方法在生成新的回收存储块的情况下,自动将其与相邻的回收存储块合并,可以进一步减少存储块的数量,减少内存或显存中的碎片,并且合并后可以生成一个较大的回收存储块,在接收到存储分配请求的存储容量较大的情况下,可以直接将合并后的回收存储块分配给存储分配请求,有效提高回收存储块的利用效率。
本申请一实施例还提供一种存储空间分配的装置,参见图5,包括:
回收链表生成模块501,被配置为建立存储分区对应的存储块回收链表,其中,所述存储分区包括至少一个存储块,所述存储块回收链表包括回收存储块的位置以及容量;
分配请求接收模块502,被配置为接收存储分配请求,其中,所述存储分配请求包括对齐信息和请求存储容量;
回收存储块查找模块503,被配置为根据所述对齐信息确定所述存储分配请求对应的存储分区,在所述存储分区剩余的存储容量小于存储分配请求的存储容量的情况下,遍历存储块回收链表,查看是否存在存储容量大于等于所述存储分配请求的存储容量的回收存储块,若是,执行第一处理模块504,若否,执行第二处理模块505;
第一处理模块504,被配置为在所述回收存储块中为所述存储分配请求配置对应的存储块,并更新所述存储块回收链表;
第二处理模块505,被配置为所述存储分配请求重新配置另一存储分区中的存储块。
可选地,回收链表生成模块501具体被配置为:根据所述存储分区中被回收存储块的位置以及容量,生成存储块回收链表中的节点,其中,所述节点与所述回收存储块一一对应。
可选地,回收链表生成模块501包括:
节点遍历单元,被配置为在所述存储分区中生成回收存储块的情况下,遍历所述存储块回收链表的节点,查看是否存在所述节点对应的回收存储块与当前的回收存储块相邻,若是,执行合并修改单元,若否,执行节点新增单元;
合并修改单元,被配置为将当前的回收存储块与相邻的回收存储块合并,并修改所述节点对应的回收存储块的位置以及容量;
节点新增单元,被配置为根据所述当前的回收存储块的位置以及容量,在所述存储块回收链表中新增一个对应的节点。
可选地,所述合并修改单元具体被配置为:
若所述当前的回收存储块位于相邻的回收存储块之后,保持所述节点对应的回收存储块的起始地址,修改所述节点对应的回收存储块的容量为当前的回收存储块与相邻的回收存储块的容量之和;
若所述当前的回收存储块位于相邻的回收存储块之前,将所述节点对应的回收存储块的起始地址修改为所述当前的回收存储块的起始地址,修改所述节点对应的回收存储块的容量为当前的回收存储块与相邻的回收存储块的容量之和;
若当前的回收存储块分别与前一个回收存储块和后一个回收存储块相邻,保持前一个节点对应的回收存储块的起始地址,修改前一个所述节点对应的回收存储块的容量为当前的回收存储块、前一个回收存储块以及后一个回收存储块的容量之和,并删除后一个节点。
可选地,所述装置还包括:第三处理模块,被配置为在所述存储分区剩余的存储容量大于等于存储分配请求的存储容量的情况下,在所述存储分区中按照先后排列顺序,为所述存储分配请求分配存储块。
可选地,第三处理模块具体被配置为:
确定上一个存储块的结束地址,将所述上一个存储块的结束地址相邻的下一个存储地址作为所述存储分配请求对应的存储块的起始地址;
根据所述存储分配请求确定对应的所述存储块的容量;
根据所述存储块的起始地址和容量为所述存储分配请求分配存储块。
可选地,第一处理模块504具体被配置为:
将所述回收存储块的起始地址作为所述存储分配请求对应的存储块的起始地址;
根据所述存储分配请求确定对应的所述存储块的容量;
根据所述存储块的起始地址和容量为所述存储分配请求分配存储块,并确定剩余的回收存储块的起始地址;
根据所述剩余的回收存储块的起始地址以及剩余容量,更新所述存储块回收链表。
可选地,所述装置还包括:
第一记录模块,被配置为记录所述存储分区的存储分区序号以及所述存储块的偏移信息,以确定所述存储块的位置;
第二记录模块,被配置为记录所述存储分区的存储分区序号以及所述回收存储块的偏移信息,以确定所述回收存储块的位置。
可选地,所述装置还包括:
标记模块,被配置为在所述存储分区大于阈值或用于临时存储的情况下,为所述存储分区添加标记位;
第四处理模块,被配置为在接收到存储分配请求的情况下,将添加有标记位的所述存储分区配置给所述存储分配请求。
上述为本实施例的一种存储空间分配的装置的示意性方案。需要说明的是,该存储空间分配的装置的技术方案与上述的存储空间分配的方法的技术方案属于同一构思,存储空间分配的装置的技术方案未详细描述的细节内容,均可以参见上述存储空间分配的方法的技术方案的描述。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述存储空间分配的方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的存储空间分配的方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述存储空间分配的方法的技术方案的描述。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。
Claims (12)
1.一种存储空间分配的方法,其特征在于,所述方法包括:
建立存储分区对应的存储块回收链表,其中,所述存储分区包括至少一个存储块,所述存储块回收链表包括回收存储块的位置以及容量,所述存储分区还包括对齐信息和存储容量;
接收存储分配请求,其中,所述存储分配请求包括对齐信息和请求存储容量;
根据所述对齐信息确定所述存储分配请求对应的存储分区,在所述存储分区剩余的存储容量小于所述请求存储容量的情况下,遍历存储块回收链表,查看是否存在存储容量大于等于所述请求存储容量的回收存储块;
若是,在所述回收存储块中为所述存储分配请求配置对应的存储块,并更新所述存储块回收链表;
若否,为所述存储分配请求重新配置另一对应的存储分区中的存储块。
2.如权利要求1所述的方法,其特征在于,建立存储分区对应的存储块回收链表,包括:
根据所述存储分区中被回收存储块的位置以及容量,生成存储块回收链表中的节点,其中,所述节点与所述回收存储块一一对应。
3.如权利要求2所述的方法,其特征在于,根据所述存储分区中被回收存储块的位置以及容量,生成存储块回收链表中的节点,包括:
在所述存储分区中生成回收存储块的情况下,遍历所述存储块回收链表的节点,查看是否存在所述节点对应的回收存储块与当前的回收存储块相邻;
若是,将当前的回收存储块与相邻的回收存储块合并,并修改所述节点对应的回收存储块的位置以及容量;
若否,根据所述当前的回收存储块的位置以及容量,在所述存储块回收链表中新增一个对应的节点。
4.如权利要求3所述的方法,其特征在于,将当前的回收存储块与相邻的回收存储块合并,并修改所述节点对应的回收存储块的位置以及容量,包括:
若所述当前的回收存储块位于相邻的回收存储块之后,保持所述节点对应的回收存储块的起始地址,修改所述节点对应的回收存储块的容量为当前的回收存储块与相邻的回收存储块的容量之和;
若所述当前的回收存储块位于相邻的回收存储块之前,将所述节点对应的回收存储块的起始地址修改为所述当前的回收存储块的起始地址,修改所述节点对应的回收存储块的容量为当前的回收存储块与相邻的回收存储块的容量之和;
若当前的回收存储块分别与前一个回收存储块和后一个回收存储块相邻,保持前一个节点对应的回收存储块的起始地址,修改前一个所述节点对应的回收存储块的容量为当前的回收存储块、前一个回收存储块以及后一个回收存储块的容量之和,并删除后一个节点。
5.如权利要求1所述的方法,其特征在于,还包括:
在所述存储分配请求对应的存储分区剩余的存储容量大于等于所述请求存储容量的情况下,在所述存储分配请求对应的存储分区中按照先后排列顺序,为所述存储分配请求分配存储块。
6.如权利要求5所述的方法,其特征在于,在所述存储分配请求对应的存储分区中按照先后排列顺序,为所述存储分配请求分配存储块,包括:
确定上一个存储块的结束地址,将所述上一个存储块的结束地址相邻的下一个存储地址作为所述存储分配请求对应的存储块的起始地址;
根据所述存储分配请求确定对应的所述存储块的容量;
根据所述存储块的起始地址和容量为所述存储分配请求分配存储块。
7.如权利要求1所述的方法,其特征在于,在所述回收存储块中为所述存储分配请求配置对应的存储块,并更新所述存储块回收链表,包括:
将所述回收存储块的起始地址作为所述存储分配请求对应的存储块的起始地址;
根据所述存储分配请求确定对应的所述存储块的容量;
根据所述存储块的起始地址和容量为所述存储分配请求分配存储块,并确定剩余的回收存储块的起始地址;
根据所述剩余的回收存储块的起始地址以及剩余容量,更新所述存储块回收链表。
8.如权利要求1-7任一项所述的方法,其特征在于,还包括:
记录所述存储分区的存储分区序号以及所述存储块的偏移信息,以确定所述存储块的位置;
记录所述存储分区的存储分区序号以及所述回收存储块的偏移信息,以确定所述回收存储块的位置。
9.如权利要求1所述的方法,其特征在于,还包括:
在所述存储分区大于阈值或用于临时存储的情况下,为所述存储分区添加标记位;
在接收到存储分配请求的情况下,将添加有标记位的所述存储分区配置给所述存储分配请求。
10.一种存储空间分配的装置,其特征在于,包括:
回收链表生成模块,被配置为建立存储分区对应的存储块回收链表,其中,所述存储分区包括至少一个存储块,所述存储块回收链表包括回收存储块的位置以及容量,所述存储分区还包括对齐信息和存储容量;
分配请求接收模块,被配置为接收存储分配请求,其中,所述存储分配请求包括对齐信息和请求存储容量;
回收存储块查找模块,被配置为根据所述对齐信息确定所述存储分配请求对应的存储分区,在所述存储分区剩余的存储容量小于所述请求存储容量的情况下,遍历存储块回收链表,查看是否存在存储容量大于等于所述存储分配请求的存储容量的回收存储块,若是,执行第一处理模块,若否,执行第二处理模块;
第一处理模块,被配置为在所述回收存储块中为所述存储分配请求配置对应的存储块,并更新所述存储块回收链表;
第二处理模块,被配置为所述存储分配请求重新配置另一对应的存储分区中的存储块。
11.一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,其特征在于,所述处理器执行所述指令时实现权利要求1-9任意一项所述方法的步骤。
12.一种计算机可读存储介质,其存储有计算机指令,其特征在于,该指令被处理器执行时实现权利要求1-9任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910849525.5A CN110532198B (zh) | 2019-09-09 | 2019-09-09 | 一种存储空间分配的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910849525.5A CN110532198B (zh) | 2019-09-09 | 2019-09-09 | 一种存储空间分配的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110532198A CN110532198A (zh) | 2019-12-03 |
CN110532198B true CN110532198B (zh) | 2023-08-08 |
Family
ID=68667836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910849525.5A Active CN110532198B (zh) | 2019-09-09 | 2019-09-09 | 一种存储空间分配的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110532198B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111506269B (zh) * | 2020-04-22 | 2021-09-07 | 腾讯科技(深圳)有限公司 | 一种磁盘存储空间分配方法、装置、设备及存储介质 |
CN113687855B (zh) * | 2021-07-22 | 2022-07-12 | 荣耀终端有限公司 | 电子设备及其系统升级包的制作方法、系统升级方法 |
CN114861911B (zh) * | 2022-05-19 | 2023-04-07 | 北京百度网讯科技有限公司 | 深度学习模型的训练方法、装置、系统、设备和介质 |
CN115658327B (zh) * | 2022-12-07 | 2023-10-31 | 摩尔线程智能科技(北京)有限责任公司 | 用于管理存储空间的装置及方法、计算设备、芯片 |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5930827A (en) * | 1996-12-02 | 1999-07-27 | Intel Corporation | Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner |
US6141722A (en) * | 1995-05-31 | 2000-10-31 | Microsoft Corporation | Method and apparatus for reclaiming memory |
CN101221536A (zh) * | 2008-01-25 | 2008-07-16 | 中兴通讯股份有限公司 | 嵌入式系统的内存管理方法及装置 |
CN101382916A (zh) * | 2007-09-06 | 2009-03-11 | 大唐移动通信设备有限公司 | 嵌入式系统内存管理的方法 |
CN101984417A (zh) * | 2010-11-01 | 2011-03-09 | 中兴通讯股份有限公司 | 内存管理方法及装置 |
CN102591789A (zh) * | 2011-12-26 | 2012-07-18 | 成都市华为赛门铁克科技有限公司 | 存储空间回收方法及装置 |
CN102866954A (zh) * | 2012-08-31 | 2013-01-09 | 华为技术有限公司 | 内存分配的方法及装置 |
CN102981967A (zh) * | 2012-11-13 | 2013-03-20 | 浪潮电子信息产业股份有限公司 | 一种提升自动精简配置容量回收效率的方法 |
CN103150259A (zh) * | 2013-03-22 | 2013-06-12 | 华为技术有限公司 | 一种内存回收方法和装置 |
CN103617123A (zh) * | 2013-11-21 | 2014-03-05 | 珠海金山网络游戏科技有限公司 | 一种通过内存块实现内存管理的方法及系统 |
CN103927261A (zh) * | 2013-01-15 | 2014-07-16 | 国际商业机器公司 | 用于精简供应存储的高效分配和回收的方法和系统 |
CN104008061A (zh) * | 2013-02-22 | 2014-08-27 | 华为技术有限公司 | 内存回收方法及装置 |
CN104391496A (zh) * | 2014-12-09 | 2015-03-04 | 北京四方继保自动化股份有限公司 | 一种工业控制系统数据内存的管理方法 |
WO2016202120A1 (zh) * | 2015-06-17 | 2016-12-22 | 深圳市中兴微电子技术有限公司 | 一种队列存储空间管理方法及装置、计算机存储介质 |
CN106569748A (zh) * | 2016-10-27 | 2017-04-19 | 南方电网科学研究院有限责任公司 | Flash文件系统的数据处理方法和装置 |
CN107153618A (zh) * | 2016-03-02 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 一种内存分配的处理方法及装置 |
CN108038002A (zh) * | 2017-12-15 | 2018-05-15 | 天津津航计算技术研究所 | 一种嵌入式软件内存管理方法 |
CN108132842A (zh) * | 2017-12-15 | 2018-06-08 | 天津津航计算技术研究所 | 一种嵌入式软件内存管理系统 |
WO2018135766A1 (ko) * | 2017-01-19 | 2018-07-26 | 주식회사 케이티 | 블록 체인을 이용하여 데이터를 관리하는 장치 및 방법 |
CN108984295A (zh) * | 2018-06-19 | 2018-12-11 | 珠海全志科技股份有限公司 | 内存回收方法、计算机装置及计算机可读存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU740041B2 (en) * | 1998-10-06 | 2001-10-25 | Canon Kabushiki Kaisha | Efficient memory allocator utilising a dual free-list structure |
US20050152192A1 (en) * | 2003-12-22 | 2005-07-14 | Manfred Boldy | Reducing occupancy of digital storage devices |
US8074014B2 (en) * | 2008-03-31 | 2011-12-06 | Microsoft Corporation | Storage systems using write off-loading |
US11074179B2 (en) * | 2017-11-02 | 2021-07-27 | Hewlett Packard Enterprise Development Lp | Managing objects stored in memory |
-
2019
- 2019-09-09 CN CN201910849525.5A patent/CN110532198B/zh active Active
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6141722A (en) * | 1995-05-31 | 2000-10-31 | Microsoft Corporation | Method and apparatus for reclaiming memory |
US5930827A (en) * | 1996-12-02 | 1999-07-27 | Intel Corporation | Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner |
CN101382916A (zh) * | 2007-09-06 | 2009-03-11 | 大唐移动通信设备有限公司 | 嵌入式系统内存管理的方法 |
CN101221536A (zh) * | 2008-01-25 | 2008-07-16 | 中兴通讯股份有限公司 | 嵌入式系统的内存管理方法及装置 |
CN101984417A (zh) * | 2010-11-01 | 2011-03-09 | 中兴通讯股份有限公司 | 内存管理方法及装置 |
CN102591789A (zh) * | 2011-12-26 | 2012-07-18 | 成都市华为赛门铁克科技有限公司 | 存储空间回收方法及装置 |
CN102866954A (zh) * | 2012-08-31 | 2013-01-09 | 华为技术有限公司 | 内存分配的方法及装置 |
CN102981967A (zh) * | 2012-11-13 | 2013-03-20 | 浪潮电子信息产业股份有限公司 | 一种提升自动精简配置容量回收效率的方法 |
CN103927261A (zh) * | 2013-01-15 | 2014-07-16 | 国际商业机器公司 | 用于精简供应存储的高效分配和回收的方法和系统 |
CN104008061A (zh) * | 2013-02-22 | 2014-08-27 | 华为技术有限公司 | 内存回收方法及装置 |
CN103150259A (zh) * | 2013-03-22 | 2013-06-12 | 华为技术有限公司 | 一种内存回收方法和装置 |
CN103617123A (zh) * | 2013-11-21 | 2014-03-05 | 珠海金山网络游戏科技有限公司 | 一种通过内存块实现内存管理的方法及系统 |
CN104391496A (zh) * | 2014-12-09 | 2015-03-04 | 北京四方继保自动化股份有限公司 | 一种工业控制系统数据内存的管理方法 |
WO2016202120A1 (zh) * | 2015-06-17 | 2016-12-22 | 深圳市中兴微电子技术有限公司 | 一种队列存储空间管理方法及装置、计算机存储介质 |
CN107153618A (zh) * | 2016-03-02 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 一种内存分配的处理方法及装置 |
CN106569748A (zh) * | 2016-10-27 | 2017-04-19 | 南方电网科学研究院有限责任公司 | Flash文件系统的数据处理方法和装置 |
WO2018135766A1 (ko) * | 2017-01-19 | 2018-07-26 | 주식회사 케이티 | 블록 체인을 이용하여 데이터를 관리하는 장치 및 방법 |
CN108038002A (zh) * | 2017-12-15 | 2018-05-15 | 天津津航计算技术研究所 | 一种嵌入式软件内存管理方法 |
CN108132842A (zh) * | 2017-12-15 | 2018-06-08 | 天津津航计算技术研究所 | 一种嵌入式软件内存管理系统 |
CN108984295A (zh) * | 2018-06-19 | 2018-12-11 | 珠海全志科技股份有限公司 | 内存回收方法、计算机装置及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
姚兴旺.如何实现数据空间的动态存储管理.《科学咨询(科技·管理)》.2015,(第01期), * |
Also Published As
Publication number | Publication date |
---|---|
CN110532198A (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110532198B (zh) | 一种存储空间分配的方法及装置 | |
KR101994021B1 (ko) | 파일 조작 방법 및 장치 | |
US20130024599A1 (en) | Method and Apparatus for SSD Storage Access | |
CN110321448B (zh) | 一种图像检索方法、装置和存储介质 | |
EP3309685A1 (en) | Method and apparatus for writing data to cache | |
CN109508235B (zh) | 一种内存池管理方法、装置及计算机可读存储介质 | |
CN109408682B (zh) | 一种正则表达式匹配的方法、系统及设备 | |
CN110795374B (zh) | 一种设备访问的方法、装置及可读存储介质 | |
US20210089442A1 (en) | Dynamically allocating memory pool subinstances | |
CN114327917A (zh) | 内存管理方法、计算设备及可读存储介质 | |
CN114138776A (zh) | 图结构和图属性分离设计的方法、系统、装置和介质 | |
CN115129621B (zh) | 一种内存管理方法、设备、介质及内存管理模块 | |
CN113392863A (zh) | 一种机器学习训练数据集的获取方法、获取装置及终端 | |
CN110688055B (zh) | 一种大图计算中数据访问方法及系统 | |
CN114579404A (zh) | 冷热页统计方法以及装置 | |
CN115712500A (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN114579253A (zh) | 内存扫描方法及装置 | |
CN114296658A (zh) | 一种存储空间分配方法、装置、终端设备及存储介质 | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
CN108205559B (zh) | 一种数据管理方法及其设备 | |
CN116340198B (zh) | 固态硬盘的数据写入方法、其装置及固态硬盘 | |
CN111708715A (zh) | 内存分配方法、内存分配装置及终端设备 | |
CN112269665A (zh) | 内存的处理方法和装置、电子设备和存储介质 | |
CN114443598A (zh) | 写数据方法、装置、计算机设备及存储介质 | |
CN115756838A (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |