CN110532198A - 一种存储空间分配的方法及装置 - Google Patents

一种存储空间分配的方法及装置 Download PDF

Info

Publication number
CN110532198A
CN110532198A CN201910849525.5A CN201910849525A CN110532198A CN 110532198 A CN110532198 A CN 110532198A CN 201910849525 A CN201910849525 A CN 201910849525A CN 110532198 A CN110532198 A CN 110532198A
Authority
CN
China
Prior art keywords
memory block
recycling
memory
capacity
allocation request
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
Application number
CN201910849525.5A
Other languages
English (en)
Other versions
CN110532198B (zh
Inventor
史少桦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Xishanju Interactive Entertainment Technology Co Ltd
Original Assignee
Chengdu Xishanju Interactive Entertainment Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Xishanju Interactive Entertainment Technology Co Ltd filed Critical Chengdu Xishanju Interactive Entertainment Technology Co Ltd
Priority to CN201910849525.5A priority Critical patent/CN110532198B/zh
Publication of CN110532198A publication Critical patent/CN110532198A/zh
Application granted granted Critical
Publication of CN110532198B publication Critical patent/CN110532198B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

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任意一项所述方法的步骤。
CN201910849525.5A 2019-09-09 2019-09-09 一种存储空间分配的方法及装置 Active CN110532198B (zh)

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 true CN110532198A (zh) 2019-12-03
CN110532198B 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506269A (zh) * 2020-04-22 2020-08-07 腾讯科技(深圳)有限公司 一种磁盘存储空间分配方法、装置、设备及存储介质
CN113687855A (zh) * 2021-07-22 2021-11-23 荣耀终端有限公司 电子设备及其系统升级包的制作方法、系统升级方法
CN115658327A (zh) * 2022-12-07 2023-01-31 摩尔线程智能科技(北京)有限责任公司 用于管理存储空间的装置及方法、计算设备、芯片
WO2023221360A1 (zh) * 2022-05-19 2023-11-23 北京百度网讯科技有限公司 深度学习模型的训练方法、装置、系统、设备和介质

Citations (24)

* Cited by examiner, † Cited by third party
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
AU5267299A (en) * 1998-10-06 2000-04-13 Canon Kabushiki Kaisha Efficient memory allocator utilising a dual free-list structure
US6141722A (en) * 1995-05-31 2000-10-31 Microsoft Corporation Method and apparatus for reclaiming memory
US20050152192A1 (en) * 2003-12-22 2005-07-14 Manfred Boldy Reducing occupancy of digital storage devices
CN101221536A (zh) * 2008-01-25 2008-07-16 中兴通讯股份有限公司 嵌入式系统的内存管理方法及装置
CN101382916A (zh) * 2007-09-06 2009-03-11 大唐移动通信设备有限公司 嵌入式系统内存管理的方法
US20090249001A1 (en) * 2008-03-31 2009-10-01 Microsoft Corporation Storage Systems Using Write Off-Loading
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 珠海全志科技股份有限公司 内存回收方法、计算机装置及计算机可读存储介质
US20190129845A1 (en) * 2017-11-02 2019-05-02 Hewlett Packard Enterprise Development Lp Managing objects stored in memory

Patent Citations (24)

* Cited by examiner, † Cited by third party
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
AU5267299A (en) * 1998-10-06 2000-04-13 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
CN101382916A (zh) * 2007-09-06 2009-03-11 大唐移动通信设备有限公司 嵌入式系统内存管理的方法
CN101221536A (zh) * 2008-01-25 2008-07-16 中兴通讯股份有限公司 嵌入式系统的内存管理方法及装置
US20090249001A1 (en) * 2008-03-31 2009-10-01 Microsoft Corporation Storage Systems Using Write Off-Loading
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 주식회사 케이티 블록 체인을 이용하여 데이터를 관리하는 장치 및 방법
US20190129845A1 (en) * 2017-11-02 2019-05-02 Hewlett Packard Enterprise Development Lp Managing objects stored in memory
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 (4)

* Cited by examiner, † Cited by third party
Title
姚兴旺: "如何实现数据空间的动态存储管理", 《科学咨询(科技?管理)》 *
姚兴旺: "如何实现数据空间的动态存储管理", 《科学咨询(科技?管理)》, no. 01, 31 January 2015 (2015-01-31) *
李海成: "WebitOS内存管理策略的优化", 《辽东学院学报(自然科学版)》 *
李海成: "WebitOS内存管理策略的优化", 《辽东学院学报(自然科学版)》, no. 02, 30 June 2009 (2009-06-30) *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111506269A (zh) * 2020-04-22 2020-08-07 腾讯科技(深圳)有限公司 一种磁盘存储空间分配方法、装置、设备及存储介质
CN111506269B (zh) * 2020-04-22 2021-09-07 腾讯科技(深圳)有限公司 一种磁盘存储空间分配方法、装置、设备及存储介质
CN113687855A (zh) * 2021-07-22 2021-11-23 荣耀终端有限公司 电子设备及其系统升级包的制作方法、系统升级方法
CN113687855B (zh) * 2021-07-22 2022-07-12 荣耀终端有限公司 电子设备及其系统升级包的制作方法、系统升级方法
WO2023221360A1 (zh) * 2022-05-19 2023-11-23 北京百度网讯科技有限公司 深度学习模型的训练方法、装置、系统、设备和介质
CN115658327A (zh) * 2022-12-07 2023-01-31 摩尔线程智能科技(北京)有限责任公司 用于管理存储空间的装置及方法、计算设备、芯片
CN115658327B (zh) * 2022-12-07 2023-10-31 摩尔线程智能科技(北京)有限责任公司 用于管理存储空间的装置及方法、计算设备、芯片

Also Published As

Publication number Publication date
CN110532198B (zh) 2023-08-08

Similar Documents

Publication Publication Date Title
CN110532198A (zh) 一种存储空间分配的方法及装置
CN108021451B (zh) 一种雾计算环境下的自适应容器迁移方法
US8750144B1 (en) System and method for reducing required memory updates
US20220027284A1 (en) Reading Sequential Data from Memory Using a Pivot Table
CN101866357A (zh) 一种三态内容寻址存储器的表项更新方法及装置
CN108228649A (zh) 用于数据访问的方法和设备
CN104426770A (zh) 路由查找方法及装置、B-Tree树结构的构建方法
CN109558421A (zh) 基于缓存的数据处理方法、系统、装置及存储介质
CN102298633A (zh) 一种分布式海量数据排重方法及系统
US20210286730A1 (en) Method, electronic device and computer program product for managing cache
CN110083307A (zh) 数据存储方法、存储器和服务器
CN110688055B (zh) 一种大图计算中数据访问方法及系统
JP2020027436A (ja) 学習装置および学習方法
CN113791730B (zh) 基于双存储池的放置组调整方法、系统、装置及存储介质
CN105138649A (zh) 数据的搜索方法、装置及终端
CN112948025B (zh) 数据加载方法、装置及存储介质、计算设备、计算系统
CN110502540A (zh) 数据处理方法、装置、计算机设备和存储介质
CN107145449A (zh) 存储设备和存储方法
CN112232401A (zh) 一种基于差分隐私及随机梯度下降的数据分类方法
CN107609174A (zh) 一种内容检索的方法及装置、终端和可读存储介质
CN107451203A (zh) 数据库访问方法及装置
CN110413579A (zh) 基于缓存价值的图片缓存方法、设备、存储介质及装置
CN113326262B (zh) 基于键值数据库的数据处理方法、装置、设备及介质
CN108762763A (zh) 面向大规模复杂数据应用领域的并行i/o优化方法
CN112597113B (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