CN114385370B - 内存分配方法、系统、设备及介质 - Google Patents
内存分配方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN114385370B CN114385370B CN202210056736.5A CN202210056736A CN114385370B CN 114385370 B CN114385370 B CN 114385370B CN 202210056736 A CN202210056736 A CN 202210056736A CN 114385370 B CN114385370 B CN 114385370B
- Authority
- CN
- China
- Prior art keywords
- size
- memory space
- memory
- request
- priority
- 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
Images
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
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本发明提出的一种内存分配方法、系统、设备及介质,该方法通过为功能模块集配置共用预设内存空间,并配置各预设优先级的优先级预设内存空间大小;响应于获取的内存请求分别确定共用占用内存空间大小和请求优先级的请求优先级占用内存空间大小,分别确定共用剩余内存空间大小和请求优先级剩余内存空间大小,根据共用剩余内存空间大小、请求优先级剩余内存空间大小和内存请求的请求空间大小在共用预设内存空间中为请求模块分配内存,可减少系统内存的频繁申请与释放,减少内存碎片,降低系统出现因内存不足或者内存错误导致的崩溃、卡顿、宕机等问题,提高系统运行稳定性,进而提升用户体验及产品竞争力。
Description
技术领域
本发明涉及智能安防技术领域,尤其涉及一种内存分配方法、系统、设备及介质。
背景技术
相关技术中,智能安防产品各个功能模块独立占用一块内存,通过系统内存分配接口直接进行内存分配,需要频繁申请及释放内存,随着系统运行时间的增加以及业务的增加,极易引起设备特别是本身内存空间较小的设备由于可用内存不足导致系统宕机,智能安防产品的运行稳定性差,可持续性差,拉低系统性能。但若是盲目增加内存,将提升大大成本。
发明内容
鉴于以上所述现有技术的缺点,本发明提供一种内存分配方法、系统、设备及介质,以解决上述技术问题。
本发明提供的一种内存分配方法,所述方法包括:
预先设置共用预设内存空间,所述共用预设内存空间为功能模块集中多个功能模块的共用内存空间,为各所述功能模块分别配置预设优先级,并配置各预设优先级的优先级预设内存空间大小;
获取请求模块的内存请求,响应于所述内存请求分别确定共用占用内存空间大小和请求优先级的请求优先级占用内存空间大小,所述请求优先级为所述请求模块的预设优先级;
分别确定共用剩余内存空间大小和请求优先级剩余内存空间大小,所述共用剩余内存空间大小根据所述共用预设内存空间大小和共用占用内存空间大小确定,所述请求优先级剩余内存空间大小根据所述请求优先级占用内存空间大小和所述请求优先级的优先级预设内存空间大小确定;
根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存。
可选的,根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存包括:
若所述请求优先级剩余内存空间大小大于所述请求空间大小,且所述共用剩余内存空间大小大于所述请求空间大小,在所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间。
可选的,根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存包括:
若所述请求优先级剩余内存空间大小小于所述请求空间大小,和/或所述共用剩余内存空间大小小于所述请求空间大小,分别获取各调配优先级的优先级调配内存空间大小,所述调配优先级包括低于所述请求优先级的至少一个预设优先级,所述优先级调配内存空间大小为所述调配优先级的优先级剩余内存空间大小;
根据所述共用剩余内存空间大小、所述请求空间大小和各所述优先级调配内存空间大小之和在所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间,其中,根据所述共用剩余内存空间大小、所述请求空间大小和各所述优先级调配内存空间大小之和在所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间包括,
若各所述优先级调配内存空间大小之和小于所述请求空间大小,和/或所述共用剩余内存空间大小小于所述请求空间大小,释放至少一个调配优先级中至少一个功能模块的至少一部分模块占用内存空间,直到释放后的各所述优先级调配内存空间大小之和大于所述请求空间大小,在释放后的所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间。
可选的,根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存包括:
获取各调配优先级的优先级调配内存空间大小,所述调配优先级包括低于所述请求优先级的至少一个预设优先级,所述优先级调配内存空间大小为所述调配优先级的优先级剩余内存空间大小;
若各所述优先级调配内存空间大小之和大于所述请求空间大小,且所述共用剩余内存空间大小大于所述请求空间大小,在所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间。
可选的,在所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间之后,所述方法还包括以下至少之一:
若第一目标优先级的优先级调配内存空间大小大于所述请求空间大小,将所述第一目标优先级的优先级剩余内存空间大小减少所述请求空间大小,所述第一目标优先级为优先级最低的所述调配优先级;
若所述第一目标优先级的优先级调配内存空间大小小于所述请求空间大小,减少第二目标优先级的优先级剩余内存空间大小,以使所述第二目标优先级所减少的内存空间大小等于所述请求空间大小,所述第二目标优先级包括所述第一目标优先级在内的至少两个所述调配优先级。
可选的,若各所述优先级调配内存空间大小之和大于所述请求空间大小,且所述共用剩余内存空间大小大于所述请求空间大小,在所述共用预设内存空间中为所述请求模块分配内存包括,
获取所述共用预设内存空间中各空闲内存空间的空闲大小;
根据所述请求空间大小从各所述空闲内存空间中确定目标内存空间,将所述目标内存空间分配给所述请求模块,其中,所述目标内存空间的确定方式包括以下至少之一:
若所述空闲内存空间的空闲大小等于所述请求空间大小,将所述空闲内存空间作为所述目标内存空间;
若各所述空闲内存空间的空闲大小均小于所述请求空间大小,将各所述空闲内存空间划分为一个或多个空闲小组,所述空闲小组中各所述空闲内存空间的空闲大小之和大于所述请求空间大小,将一所述空闲小组中各所述空闲内存空间作为所述目标内存空间;
若存在至少一个所述空闲内存空间的空闲大小大于所述请求空间大小,将空闲大小最大的所述空闲内存空间中确定为所述目标内存空间。
可选的,若各所述优先级调配内存空间大小之和小于所述请求空间大小,和/或所述共用剩余内存空间大小小于所述请求空间大小,所述方法还包括,
分别确定第一差异内存空间大小和第二差异内存空间大小,并确定目标差异内存空间大小,所述目标差异内存空间大小为所述第一差异内存空间大小和第二差异内存空间大小中较大的值,所述第一差异内存空间大小根据所述请求空间大小和各所述优先级调配内存空间大小之和确定,所述第二差异内存空间大小根据所述共用剩余内存空间大小和所述请求空间大小确定;
按照优先级低到高的顺序依次遍历所述调配优先级中功能模块的模块占用子内存空间,若各所述模块占用子内存空间中存在目标模块占用子内存空间达到分配条件,则释放所述目标模块占用子内存空间,并在释放后的所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间,其中,所述分配条件包括以下至少之一:
存在一模块占用子内存空间大小达到差异范围,所述差异范围的最小值等于或大于所述目标差异内存空间大小,所述差异范围的最大值大于所述目标差异内存空间大小;
多个模块占用子内存空间大小之和达到所述差异范围。
可选的,根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小之前,所述方法还包括:
获取所述请求模块的模块预设内存空间大小和模块占用内存空间大小,确定所述请求模块的模块剩余内存空间大小;
若所述模块剩余内存空间大小大于所述请求空间大小,则根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存。
可选的,所述方法还包括:
获取各功能模块的优先级调整参数,所述优先级调整参数包括当前光照强度、当前时间、当前日期、模块调用频次中至少之一;
根据所述优先级调整参数调整所述功能模块的预设优先级。
可选的,响应于所述内存请求分别确定共用占用内存空间大小和请求优先级的请求优先级占用内存空间大小包括:
获取所述功能模块集中各功能模块的模块占用内存空间大小;
根据各功能模块的模块占用内存空间大小确定共用占用内存空间大小;
根据请求优先级的各功能模块的模块占用内存空间大小确定请求优先级占用内存空间大小。
可选的,根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存之前,所述方法还包括:
分别获取系统预设内存空间大小和当前系统占用内存空间大小,并确定系统超用内存空间大小;
将所述共用剩余内存空间大小减去所述系统超用内存空间大小得到可用内存空间大小,并以可用剩余内存空间大小更新所述共用剩余内存空间大小。
本发明还提供了一种内存分配系统,所述系统包括:
配置模块,用于预先设置共用预设内存空间,所述共用预设内存空间为功能模块集中多个功能模块的共用内存空间,为各所述功能模块分别配置预设优先级,并配置各预设优先级的优先级预设内存空间大小;
响应模块,用于获取请求模块的内存请求,响应于所述内存请求分别确定共用占用内存空间大小和请求优先级的请求优先级占用内存空间大小,所述请求优先级为所述请求模块的预设优先级;
确定模块,用于分别确定共用剩余内存空间大小和请求优先级剩余内存空间大小,所述共用剩余内存空间大小根据所述共用预设内存空间大小和共用占用内存空间大小确定,所述请求优先级剩余内存空间大小根据所述请求优先级占用内存空间大小和所述请求优先级的优先级预设内存空间大小确定;
分配模块,用于根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存。
本发明还提供了一种电子设备,包括处理器、存储器和通信总线;
所述通信总线用于将所述处理器和存储器连接;
所述处理器用于执行所述存储器中存储的计算机程序,以实现如上述中任一项实施例所述的方法。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,
所述计算机程序用于使所述计算机执行如上述任一项实施例所述的方法。
本发明的有益效果:本发明提出的一种内存分配方法、系统、设备及介质,该方法通过为功能模块集配置共用预设内存空间,并配置各预设优先级的优先级预设内存空间大小;响应于获取的内存请求分别确定共用占用内存空间大小和请求优先级的请求优先级占用内存空间大小,分别确定共用剩余内存空间大小和请求优先级剩余内存空间大小,根据共用剩余内存空间大小、请求优先级剩余内存空间大小和内存请求的请求空间大小在共用预设内存空间中为请求模块分配内存,可减少系统内存的频繁申请与释放,减少内存碎片,降低系统出现因内存不足或者内存错误导致的崩溃、卡顿、宕机等问题,提高系统运行稳定性,进而提升用户体验及产品竞争力。
附图说明
图1是本发明一实施例中提供的内存分配方法的一种流程示意图;
图2是本发明一实施例中提供的具体的内存分配方法的一种流程示意图;
图3是本发明一实施例中提供的具体的内存分配方法的另一种流程示意图;
图4是本发明一实施例中提供的具体的内存分配方法的另一种流程示意图;
图5是本发明一实施例中提供的具体的内存分配方法的另一种流程示意图;
图6是本发明一实施例中提供的具体的内存分配方法的另一种流程示意图;
图7是本发明一实施例中提供的具体的内存分配方法的另一种流程示意图;
图8是本发明一实施例中提供的具体的内存分配方法的另一种流程示意图;
图9是本发明一实施例提供的内存分配系统的一种结构示意图;
图10是本发明一实施例提供的一种电子设备的结构示意图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
在下文描述中,探讨了大量细节,以提供对本发明实施例的更透彻的解释,然而,对本领域技术人员来说,可以在没有这些具体细节的情况下实施本发明的实施例是显而易见的,在其他实施例中,以方框图的形式而不是以细节的形式来示出公知的结构和设备,以避免使本发明的实施例难以理解。
如图1所示,本实施例提供了一种内存分配方法,该方法包括:
步骤S101:预先设置共用预设内存空间,并配置各预设优先级的优先级预设内存空间大小。
其中,功能模块集包括多个功能模块。共用预设内存空间为功能模块集中多个功能模块的共用内存空间。
与相关技术中为每一个功能模块分别配置独立占用的内存相比,本实施例中的共用预设内存空间是各个功能模块所公用的空间,在进行内存使用时,各个功能模块均在共用预设内存空间中进行内存分配。例如,可以根据各功能模块的内存占用评估及当前系统运行的可用内存大小,预先分配一块内存缓冲区buffer,所有功能模块共享该内存缓冲区buffer。
可选的,共用预设内存空间的配置方法可以是在系统启动时,获取系统运行的总可用内存大小,根据各功能模块的内存占用评估及总可用内存大小来配置共用预设内存空间。其中,内存占用评估可以是本领域技术人员根据历史数据、工作经验等维度所预估的满足该功能模块正常使用的内存空间大小。
可选的,共用预设内存空间、预设优先级以及优先级预设内存空间大小的配置也可以根据设备基本信息来确定,本领域技术人员预先设定各设备的共用预设内存空间。例如,智能安防产品在系统初始化启动时,获取设备的设备基本信息,设备基本信息包括型号信息、内存信息、系统版本信息等,根据型号信息及内存信息可以获取到该设备共用预设内存空间(共享内存缓冲区)的大小、功能模块优先级信息(预设优先级)、内存门限(优先级预设内存空间大小)等信息,其中获取的共享内存缓存区为所有功能模块可使用的的内存总和,系统启动时预先分配共享内存缓冲区提供给所有功能模块使用。
各功能模块的预设优先级可以是本领域技术人员根据特定的标准或需要进行设定的。功能模块集中的功能模块可以分属于多个预设优先级。一个功能模块具有一个预设优先级。每一个预设优先级可以对应有一个或多个功能模块。例如,可以将智能安防产品的功能模块划分为4个预设优先级,其中以优先级4、3、2、1的顺序优先级依次降低,其中,将预览、事件上报、私有协议拉流、httpServer配置为优先级4,onvif、GB28181、ga1400、设备配置、事件推图配置为优先级3,ftp推图、email联动配置为优先级2,存储、回放、预录配置为优先级1。
以该方法应用于安防设备中为例,安防设备中整个内存空间视为总内存空间,其中留出系统预设大小的内存空间作为系统专用内存空间,剩余的内存空间中,减去预留预设大小的内存空间作为防崩溃内存空间,将其余的内存空间作为共用预设内存空间,用于应对各功能模块的内存需求。
在一个实施例中,功能模块的预设优先级也可以根据需要进行调整,此时,该方法还包括:
获取各功能模块的优先级调整参数,优先级调整参数包括当前光照强度、当前时间、当前日期、模块调用频次中至少之一;
根据优先级调整参数调整功能模块的预设优先级。
例如,以该方法应用于安防设备为例,在夜间时,可能视频拍摄模块由于光线较暗,可以调低某些功能模块的预设优先级,将报警模块等可能夜间使用可能性较大,需求较强的功能模块的预设优先级调高。此时可以根据当前光照强度、当前时间等来确定是否到了安防设备各功能模块的重点使用时间段。又例如,在学校等场景下,法定节假日往往人员较少,此时可能报警模块的优先级就需要调高,可以通过当前日期来确定是否为法定节假日。又例如,在初始进行功能模块的预设优先级配置时,对某一个功能模块的被调用频次预估不足,此时当某一功能模块的调用频次达到预设频次阈值,则可以对功能模块的预设优先级进行提高,相反,若某一功能模块的调用频次低于预设频次阈值,则可以对功能模块的预设优先级进行降低。
可选的,各预设优先级的优先级预设内存空间大小之和小于或等于共用预设内存空间大小。若各预设优先级的优先级预设内存空间大小之和大于共用预设内存空间大小,将有可能导致预设优先级较高的功能模块由于请求时间较晚,导致没有空闲内存空间可供分配,影响设备正常使用,降低使用体验。故本实施例中,可以限定各预设优先级的优先级预设内存空间大小之和小于或等于共用预设内存空间大小,以避免优先级较高的功能模块由于内存空间申请较晚,被低级优先级的功能模块将内存空间全部占用,以致没有空闲内存空间可供分配给高级优先级的功能模块的情形发生。
可选的,在进行功能模块的预设优先级调整时,可以采用联动调整的方式,预先设置功能模块之间的关联关系,当功能模块A发生了预设优先级调整,则与功能模块A具有关联关系的一个或多个功能模块也随之进行预设优先级调整,如同步提升或降低优先级等。
步骤S102:获取请求模块的内存请求,响应于内存请求分别确定共用占用内存空间大小和请求优先级的请求优先级占用内存空间大小。
其中,请求优先级为所述请求模块的预设优先级。
可选的,请求模块可能是一个或多个,且各请求模块可能是同一预设优先级,也可能至少一部分请求模块是不同优先级。若同期获取到多个请求模块的内存请求,此时,可以根据请求模块的预设优先级从高到低进行内存请求的处理,若多个内存请求的请求模块为同一预设优先级,此时可以根据预先设置的功能模块的权重来依次进行内存请求的处理。当然,针对上述情形,也可以是按照本领域技术人员所设定的规则进行处理。
在一个实施例中,响应于内存请求分别确定共用占用内存空间大小和请求优先级的请求优先级占用内存空间大小包括:
获取功能模块集中各功能模块的模块占用内存空间大小;
根据各功能模块的模块占用内存空间大小确定共用占用内存空间大小;
根据请求优先级的各功能模块的模块占用内存空间大小确定请求优先级占用内存空间大小。
可选的,各功能模块的模块占用内存空间大小可以通过监测系统中各功能模块的内存开销信息以获取。
将每个功能模块的模块占用内存空间大小进行累计加总,以得到共用占用内存空间大小。
根据预设优先级选出预设优先级为请求优先级的功能模块,并将这些功能模块的模块占用内存空间大小进行累计加总,以得到请求优先级占用内存空间大小。
可选的,请求优先级的确定方式可以是通过内存请求的请求模块标识来确定当前请求模块具体是哪一个功能模块,再根据该功能模块的预设优先级来确定请求优先级。每一个功能模块均预先设置有唯一确定的模块标识。请求优先级也可以是内存请求所携带的请求消息自带的信息。当然,请求优先级也可以采用本领域技术人员所知晓的其他方式实现。
在一个实施例中,在响应内存请求进行内存分配之前,该方法还包括预先对各功能模块分别进行模块预设内存空间大小的配置。也就是说每一个功能模块均预先设置有其所能占用内存空间的门限值(模块预设内存空间大小)。
步骤S103:分别确定共用剩余内存空间大小和请求优先级剩余内存空间大小。
其中,共用剩余内存空间大小根据共用预设内存空间大小和共用占用内存空间大小确定;请求优先级剩余内存空间大小根据请求优先级占用内存空间大小和请求优先级的优先级预设内存空间大小确定。
共用剩余内存空间大小大于或等于内存请求的请求空间大小也即当前可以有空闲内存空间分配给请求模块,否则,若共用剩余内存空间大小小于内存请求的请求空间大小,共用剩余内存空间大小小于内存请求的请求空间大小,当前空闲内存空间不足以满足请求模块的内存需求,可以拒绝为请求模块进行内存分配。也可以将预设优先级低于请求优先级的功能模块所占用的内存空间进行释放,直到共用剩余内存空间大小满足请求模块的内存需求。
可选的,可以根据共用预设内存空间大小和共用占用内存空间大小确定共用剩余内存空间大小。
其中,共用剩余内存空间大小=共用预设内存空间大小-共用占用内存空间大小。
共用预设内存空间大小也即共用预设内存空间的内存空间大小。
可选的,共用占用内存空间大小可以是如上述实施例所述的根据各功能模块的模块占用内存空间大小来确定。但有时系统在运行过程中,产生了大量的数据,当前为系统所分配的系统专用内存不足以满足系统的当前内存需求,由于系统的优先级是最高的,高于各功能模块,当前内存空间应当优先满足系统的需求。此时,可能存在系统也对共用预设内存空间有一定的占用。故可以在确定共用占用内存空间大小时也获取系统对共用占用内存空间的占用大小(系统额外占用内存空间大小),将系统额外占用内存空间大小与各功能模块的模块占用内存空间大小共同来确定共用占用内存空间大小。
可选的,请求优先级剩余内存空间大小=请求优先级的优先级预设内存空间大小-请求优先级占用内存空间大小。请求优先级占用内存空间大小为预设优先级为请求优先级的各个功能模块的模块占用内存空间大小之和。
步骤S104:根据共用剩余内存空间大小、请求优先级剩余内存空间大小和内存请求的请求空间大小在共用预设内存空间中为请求模块分配内存。
在一个实施例中,步骤S104根据共用剩余内存空间大小、请求优先级剩余内存空间大小和内存请求的请求空间大小在共用预设内存空间中为请求模块分配内存之前,该方法还包括:
获取请求模块的模块预设内存空间大小和模块占用内存空间大小,确定请求模块的模块剩余内存空间大小;
若模块剩余内存空间大小大于或等于请求空间大小,则根据共用剩余内存空间大小、请求优先级剩余内存空间大小和内存请求的请求空间大小在共用预设内存空间中为请求模块分配内存。
换句话说,可以预先设置每一个功能模块对应的模块预设内存空间大小,当请求模块的模块占用内存空间大小已经达到模块预设内存空间大小,或是根据模块预设内存空间大小和模块占用内存空间大小确定的模块剩余内存空间大小小于请求空间大小,该请求模块的内存空间的剩余内存配额不足以满足其内存需求,则拒绝为该请求模块分配内存。反正,若模块剩余内存空间大小大于或等于请求空间大小,则可以为其分配内存。其中,模块剩余内存空间大小=模块预设内存空间大小-模块占用内存空间大小。
当然,本领域技术人员也可以不限制各功能模块的占用内存,但这样可能导致部分功能模块内存占用过多,影响系统的正常运行。
在一个实施例中,根据共用剩余内存空间大小、请求优先级剩余内存空间大小和内存请求的请求空间大小在共用预设内存空间中为请求模块分配内存包括:
若请求优先级剩余内存空间大小大于或等于请求空间大小,且共用剩余内存空间大小大于或等于请求空间大小,在共用预设内存空间中为请求模块分配请求空间大小的内存空间。
此时,一方面共用预设内存空间中的空闲内存空间足以满足请求模块的内存需求,且请求优先级的内存空间配额(请求优先级剩余内存空间大小)也足以满足请求模块的内存需求,则可以为该请求模块分配内存空间。
在一个实施例中,根据共用剩余内存空间大小、请求优先级剩余内存空间大小和内存请求的请求空间大小在共用预设内存空间中为请求模块分配内存包括:
若请求优先级剩余内存空间大小小于请求空间大小,和/或共用剩余内存空间大小小于请求空间大小,分别获取各调配优先级的优先级调配内存空间大小,调配优先级包括低于请求优先级的至少一个预设优先级,优先级调配内存空间大小为调配优先级的优先级剩余内存空间大小;
根据共用剩余内存空间大小、请求空间大小和各优先级调配内存空间大小之和在共用预设内存空间中为请求模块分配请求空间大小的内存空间。
可选的,根据共用剩余内存空间大小、请求空间大小和各优先级调配内存空间大小之和在共用预设内存空间中为请求模块分配请求空间大小的内存空间包括:
若各优先级调配内存空间大小之和小于请求空间大小,和/或所述共用剩余内存空间大小小于所述请求空间大小,释放至少一个调配优先级中至少一个功能模块的至少一部分模块占用内存空间,直到释放后的各优先级调配内存空间大小之和大于或等于请求空间大小,在释放后的共用预设内存空间中为请求模块分配请求空间大小的内存空间。
在一实施例中,根据共用剩余内存空间大小、请求优先级剩余内存空间大小和内存请求的请求空间大小在共用预设内存空间中为请求模块分配内存包括:
获取各调配优先级的优先级调配内存空间大小,调配优先级包括低于请求优先级的至少一个预设优先级,优先级调配内存空间大小为调配优先级的优先级剩余内存空间大小;
若各优先级调配内存空间大小之和大于或等于请求空间大小,且共用剩余内存空间大小大于请求空间大小,在共用预设内存空间中为请求模块分配请求空间大小的内存空间;
可选的,在调配优先级对应的多个功能模块中,具体释放哪一个功能模块的模块占用内存空间可以根据本领域技术人员预先设定的内存释放规则实现,也可以是预先对功能模块设置权重,根据权重从低权重到高权重依次进行内存释放。
可选的,当调配优先级为至少两个预设优先级时,可以在每一个优先级选择一部分功能模块进行内存释放,也可以仅将调配优先级最低的多个功能模块中至少一部分功能模块进行内存释放。换句话说,仅针对于预设优先级最低的功能模块执行内存释放动作,当预设优先级最低的功能模块执行内存释放后,释放后的各优先级调配内存空间大小之和仍小于请求空间大小,再对预设优先级次低的功能模块执行内存释放,直到释放后的各所述优先级调配内存空间大小之和大于或等于所述请求空间大小。也就是说内存释放的过程是按照预设优先级从低到高的顺序依次执行的。
一方面共用预设内存空间中的空闲内存空间不足以满足请求模块的内存需求,和/或,请求优先级的内存空间配额(请求优先级剩余内存空间大小)不足以满足请求模块的内存需求,此时需要进行内存空间的调配,将预设优先级较请求优先级低的功能模块所占用的内存加以释放,以释放后的内存空间和原有的剩余内存空间来满足请求模块的内存需求。
在一个实施例中,若各优先级调配内存空间大小之和小于请求空间大小,和/或共用剩余内存空间大小小于请求空间大小,方法还包括,
分别确定第一差异内存空间大小和第二差异内存空间大小,并确定目标差异内存空间大小,目标差异内存空间大小为第一差异内存空间大小和第二差异内存空间大小中较大的值,第一差异内存空间大小根据请求空间大小和各优先级调配内存空间大小之和确定,第二差异内存空间大小根据共用剩余内存空间大小和请求空间大小确定;
按照优先级低到高的顺序依次遍历调配优先级中功能模块的模块占用子内存空间,若各模块占用子内存空间中存在目标模块占用子内存空间达到分配条件,则释放目标模块占用子内存空间,并在释放后的共用预设内存空间中为请求模块分配请求空间大小的内存空间,其中,分配条件包括以下至少之一:
存在一模块占用子内存空间大小达到差异范围,差异范围的最小值等于或大于目标差异内存空间大小,差异范围的最大值大于目标差异内存空间大小,例如,目标差异内存空间大小为5M,差异范围为【5,6】,若某一个模块占用子内存空间大小为5.2M,则该模块占用子内存空间大小达到差异范围,最小值小于或等于最大值,当最小值等于最大值时,该差异范围可以理解为差异阈值;
多个模块占用子内存空间大小之和达到差异范围,例如,目标差异内存空间大小为5M,差异范围为【5,6】,若遍历调配优先级中第一个功能模块模块占用子内存空间大小为2M,遍历调配优先级中第二个功能模块的模块占用子内存空间大小为3M,此时多个模块占用子内存空间大小之和为5M,则该模块占用子内存空间大小达到差异范围,最小值小于或等于最大值,当最小值等于最大值时,该差异范围可以理解为差异阈值。
其中,差异范围可以是【目标差异内存空间大小,目标差异内存空间大小*(1+X%)】,X大于零。也即差异范围的最大值=目标差异内存空间大小*(1+X%)。
由于一个功能模块在内存中所占用的内存空间可以是一块也可以是多个块,每一个块记为模块占用子内存空间。
可选的,请求空间大小刚好与其中一个模块占用子内存空间大小相等或略小于一个模块占用子内存空间大小,此时将该模块占用子内存空间作为目标模块占用子内存空间,并将该模块占用子内存空间的内存空间进行释放。
可选的,若分配条件为多个模块占用子内存空间大小之和达到差异范围,此时多个模块占用子内存空间的确定可以是按照遍历顺序依次确定,也可以是将全部的模块占用子内存空间进行遍历以得到各模块占用子内存空间的模块占用子内存空间大小,从中选择模块占用子内存空间大小加总位于差异范围,且模块占用子内存空间的数量最少的一个模块占用子内存空间组合作为目标模块占用子内存空间,进行内存释放。
在一个实施例中,获取各调配优先级的优先级调配内存空间大小时,可以按照预设优先级从低到高依次分别获取各调配优先级的优先级调配内存空间大小,并依次对获取到的优先级调配内存空间大小进行累加得到累加内存空间大小,直到累加内存空间大小大于或等于请求空间大小,停止调配优先级的优先级调配内存空间大小的获取,并在共用预设内存空间中为请求模块分配请求空间大小的内存空间。
在一个实施例中,在共用预设内存空间中为请求模块分配请求空间大小的内存空间之后,该方法还包括以下至少之一:
若第一目标优先级的优先级调配内存空间大小大于或等于请求空间大小,将第一目标优先级的优先级剩余内存空间大小减少请求空间大小,第一目标优先级为优先级最低的调配优先级(也即,各调配优先级中优先级最低的即为第一目标优先级);
若第一目标优先级的优先级调配内存空间大小小于请求空间大小,减少第二目标优先级的优先级剩余内存空间大小,以使第二目标优先级所减少的内存空间大小等于请求空间大小,第二目标优先级包括第一目标优先级在内的至少两个调配优先级。也即第二目标优先级=第一目标优先级和除第一目标优先级外的其他至少一个调配优先级。可选的,第二目标优先级为各调配优先级中优先级最低的两个预设优先级。
例如,预设优先级从高到低依次为5、4、3、2、1,请求优先级为4,请求空间大小为10,则调配优先级可以是3、2、1中至少之一,其中,优先级1的剩余内存空间大小为6,优先级2的剩余内存空间大小为3,优先级3的剩余内存空间大小为5,可见,优先级1的剩余内存空间大小小于请求空间大小,优先级2的剩余内存空间大小小于第一剩余请求空间大小,第一剩余请求空间大小=请求空间大小-优先级1的剩余内存空间大小,优先级3的剩余内存空间大小大于第二剩余请求空间大小,第二剩余请求空间大小=请求空间大小-优先级1的剩余内存空间大小-优先级2的剩余内存空间大小,此时,第一目标优先级为1,第二目标优先级为1、2和3,将优先级1的剩余内存空间大小调整为0,优先级2的剩余内存空间大小调整为0,优先级3的剩余内存空间大小调整为4,此时,第二目标优先级所减少的内存空间大小为6+3+1=10,刚好等于请求空间大小。
可选的,减少第二目标优先级的优先级剩余内存空间大小时,可以按照从优先级低到高的顺序依次进行减少。例如依次将优先级低的优先级调配内存空间大小抵扣请求空间大小,如上述方式,从优先级1一直抵扣到优先级3,直到减少的内存空间大小等于请求空间大小。也可以按照比例分别从各优先级剩余内存空间大小(优先级调配内存空间大小)进行优先级调配内存空间大小减少。例如,可以先确定各优先级调配内存空间大小比例,再根据该比例和请求空间大小分别确定每一个调配优先级需要减少的空间大小。以请求空间大小为8为例,调配优先级从低到高分别为1、2、3,优先级1的优先级调配内存空间大小(优先级剩余内存空间大小)为20,优先级2的优先级调配内存空间大小(优先级剩余内存空间大小)为10,优先级3的优先级调配内存空间大小(优先级剩余内存空间大小)为10,则各优先级调配内存空间大小比例依次为2:1:1,故,优先级1的优先级调配内存空间大小减少4(8*(2/(2+1+1)=4)),也即此时优先级1的优先级调配内存空间大小为16;相似的优先级2的优先级调配内存空间大小为8,优先级3的优先级调配内存空间大小为8。第二目标优先级(1、2、3)所减少的内存空间大小8,等于请求空间大小。
这样,一方面满足了请求模块的内存需求,予以内存分配,另一方面也将对应的调配优先级的优先级剩余内存空间对应减少,避免了调配优先级的模块进行内存请求时也对其进行内存分配,可能会导致优先级更高的功能模块的内存需求不能被满足的问题。
在一个实施例中,在共用预设内存空间中为请求模块分配内存包括:
获取共用预设内存空间中各空闲内存空间的空闲大小;
根据请求空间大小从各空闲内存空间中确定目标内存空间,将目标内存空间分配给请求模块。
其中,目标内存空间的确定方式包括以下至少之一:
若空闲内存空间的空闲大小等于请求空间大小,将空闲内存空间作为目标内存空间,可选的,若存在至少两个空闲内存空间的空闲大小等于请求空间大小,则从中选择一个空闲内存空间作为目标内存空间;
若各空闲内存空间的空闲大小均小于请求空间大小,将各空闲内存空间划分为一个或多个空闲小组,空闲小组中各空闲内存空间的空闲大小之和大于或等于请求空间大小,将一空闲小组中各空闲内存空间作为目标内存空间;
若存在至少一个空闲内存空间的空闲大小大于请求空间大小,将空闲大小最大的空闲内存空间确定为目标内存空间。
可选的,若存在多个空闲小组中的各空闲内存空间的空闲大小之和大于或等于请求空间大小,则分别获取各空闲小组中空闲内存空间的数量,将数量最少的一个空闲小组作为目标内存空间。若存在两个空闲小组中的各空闲内存空间的空闲大小之和大于或等于请求空间大小,且数量相同,则可以获取这两个空闲小组中空闲大小最大的一个空闲内存空间所在的空闲小组作为目标内存空间。
其中,空闲小组的划分方式可以类似于排列组合,或者本领域技术人员所知晓的其他方式实现。
可选的,若存在多个所述空闲内存空间的空闲大小大于所述请求空间大小,将空闲大小最接近请求空间大小的空闲内存空间确定为目标内存空间。空闲大小与请求空间大小的接近程度A可以通过下述方式确定:接近程度A=|空闲大小-请求空间大小|/请求空间大小*100%。接近程度越接近0,则越接近。
通过上述目标内存空间的确定方式可以尽量减少内存碎片。
在一个实施例中,根据共用剩余内存空间大小、请求优先级剩余内存空间大小和内存请求的请求空间大小在共用预设内存空间中为请求模块分配内存之前,该方法还包括:
分别获取系统预设内存空间大小和当前系统占用内存空间大小,并确定系统超用内存空间大小;
将共用剩余内存空间大小减去系统超用内存空间大小得到可用内存空间大小,并以可用剩余内存空间大小更新共用剩余内存空间大小。
乐观情况下,系统所占用的内存并不会超出原有划分给其的系统专用内存空间,但有时系统需要的内存空间较大,可能会超出系统专用内存空间,由于系统的优先级是最高级的,一旦有内存通常是保证系统的需求,故,一旦系统专用内存空间不够系统使用,就会将共用预设内存空间的一部分内存分配给系统使用,此时,就需要将这部分系统超用内存空间大小从共用剩余内存空间大小中除去,并对共用剩余内存空间大小进行更新,以免后续处理过程中理论上内存空间够用,实际上无内存空间可用的状态。
上述实施例提供了一种内存分配方法,通过为功能模块集配置共用预设内存空间,并配置各预设优先级的优先级预设内存空间大小;响应于获取的内存请求分别确定共用占用内存空间大小和请求优先级的请求优先级占用内存空间大小,分别确定共用剩余内存空间大小和请求优先级剩余内存空间大小,根据共用剩余内存空间大小、请求优先级剩余内存空间大小和内存请求的请求空间大小在共用预设内存空间中为请求模块分配内存,可减少系统内存的频繁申请与释放,减少内存碎片,降低系统出现因内存不足或者内存错误导致的崩溃、卡顿、宕机等问题,提高系统运行稳定性,进而提升用户体验及产品竞争力。
可选的,通过将各功能模块配置可以共享的共用预设内存空间(共享内存缓冲区),可减少系统内存的频繁申请与释放,减少内存碎片。
可选的,通过对各功能模块设置预设优先级,针对同一功能模块的优先级调整参数来调整预设优先级,如不同时段动态调整优先级,可优先保障高优先级业务不中断。
可选的,通过监测系统中各模块的内存开销信息(获取各功能模块的模块占用内存空间大小),设置优先级预设内存空间大小、共用预设内存空间大小;基于功能模块的内存使用评估,确定各模块的内存使用上限(模块预设内存空间大),监测统计系统运行过程中各功能模块的内存开销,功能模块共享内存缓冲区的方式,可减少系统内存碎片,降低系统出现因内存不足或者内存错误导致的崩溃、卡顿、宕机等问题,提高系统运行稳定性,进而提升用户体验及产品竞争力。
下面以内存分配方法应用于智能安防产品为例,通过一个具体的实施例示例性的说明上述实施例提到的内存分配方法,该方法包括:
第一,系统启动时,获取当前智能安防产品系统运行的总体可用内存大小。
第二,根据各功能模块的内存占用评估及当前系统运行的总体可用内存大小,预先分配一块内存缓冲区buffer(共用预设内存空间),所有功能模块共享该内存缓冲区buffer。
第三,确定智能安防产品的各功能优先级(比如分为4个优先级:4,3,2,1,预览、事件上报、私有协议拉流、httpServer为优先级4,onvif、GB28181、ga1400、设备配置、事件推图为优先级3,ftp推图、email联动为优先级2,存储、回放、预录为优先级1,数字越小表示优先级越低)。
第四,监控并统计各功能模块的内存开销信息(模块占用内存空间大小)。
第五,设置各功能模块的内存占用门限上限(模块预设内存空间大小),设置各功能优先级可以从共享内存缓冲区申请内存的内存缓冲区门限下限(优先级预设内存空间大小),设置各功能模块可申请内存的系统可用内存门限下限(系统专用内存空间大小)。
可选的,共用预设内存空间大小=总体可用内存大小-系统专用内存空间大小。
可选的,有时,为例避免系统崩溃,还可以在总的内存空间中留有一定大小的冗余内存空间,此时共用预设内存空间大小=总体可用内存大小-系统专用内存空间大小-冗余内存空间大小。
第六,功能模块(请求模块)申请内存前,预先获取当前功能模块已占用共享内存缓冲区大小(请求模块的模块占用内存空间大小),获取共享内存缓冲区剩余的内存大小(共用剩余内存空间大小)。
需要说明的是,若共享内存缓冲区有部分内存被系统占用,则将共享内存缓冲区剩余的内存大小调整为当前系统可用内存大小(MemAvailable)。
第七,功能模块(请求模块)申请内存前,判断共享内存缓冲区剩余的内存大小(共用剩余内存空间大小)减去本次申请的内存(请求空间大小)后是否已小于或者等于0。
第八,功能模块申请内存前,判断当前功能模块已占用内存(模块占用内存空间大小)加上本次申请的内存大小(请求空间大小)是否大于等于模块占用内存上限(模块预设内存空间大小)。
第九、功能模块申请内存前,判断当前剩余共享内存缓冲区大小(共用剩余内存空间大小)减去本次申请内存(请求空间大小)后是否大于该功能所处的优先级可以从内存缓冲区申请内存的门限下限(请求优先级剩余内存空间大小)。
第十、如果第七、第八均满足条件,第九无法满足条件,那么获取低于该请求优先级各功能模块占用共享内存缓冲区的大小,找到功能优先级低于该功能模块的最合适的一块内存,从共享缓冲区中将内存释放,提供给该功能模块使用,本次内存申请成功。
第十一、如果第七、第八、第九均满足条件,则本次功能模块申请内存成功。
第十二、否则,本次功能模块内存申请失败,也即第七和/或第八不满足条件,则内存申请失败。
可选的,针对各功能模块的预设优先级,可以根据日期、时间分时段对各功能进行优先级设置调整,不同日期及时段针对同一功能模块可以设置不同的预设优先级。
在一个实施例中,参见图2,图2为一种具体的内存分配方法示例,该方法包括:
步骤S201:系统初始化。
步骤S202:功能模块调用系统内存接口malloc申请内存。
其中,malloc(memory allocation,动态内存分配)为动态内存分配接口。
步骤S203:功能模块调用系统内存接口free释放内存。
也即,当功能模块结束对该内存的使用后,将释放该内存空间。
在一个实施例中,参见图3,图3为另一种具体的内存分配方法示例,该方法包括:
步骤S301:系统初始化。
步骤S302:设置系统内存可申请阈值下限(系统内存百分比或具体数值)。
也即,设置系统专用内存空间,系统专用内存空间大小可以是具体的数值,也可以是总内存空间大小的百分比。
步骤S303:功能模块进行内存申请前,判断是否满足内存申请条件,满足则调用系统内存接口malloc申请内存。
此时,内存申请条件为当前可用总内存空间大小大于功能模块所需要申请的请求空间大小,若满足该内存申请条件,则进行内存分配,否则,拒绝内存分配。
步骤S304:功能模块调用系统内存接口free释放内存。
也即,当功能模块结束对该内存的使用后,将释放该内存空间。
在一个实施例中,参见图4,图4为另一种具体的内存分配方法示例,该方法包括:
步骤S401:系统初始化启动,预分配共享内存缓冲区。
该共享内存缓冲区也即共用预设内存空间。
步骤S402:设置系统内存可申请阈值下限(系统内存百分比或具体数值)。
也即,设置系统专用内存空间,系统专用内存空间大小可以是具体的数值,也可以是总内存空间大小的百分比。
步骤S403:功能模块进行内存申请前,判断是否满足内存申请条件,满足则调用系统内存接口从共享内存缓冲区分配内存。
此时,内存申请条件为当前可用总内存空间大小大于功能模块所需要申请的请求空间大小,若满足该内存申请条件,则进行内存分配,否则,拒绝内存分配。且,本步骤中是在共享内存缓冲区分配内存与相关技术中只能在功能模块预先设定的独立的内存空间进行内存分配并不相同。
步骤S404:功能模块调用自定义内存释放接口将占用内存释放回共享内存缓冲区。
也即,当功能模块完成对内存空间的需求后,将该内存空间释放回回共享内存缓冲区,而不是全部内存空间或系统内存空间。
在一个实施例中,参见图5,图5为另一种具体的内存分配方法示例,该方法包括:
步骤S501:系统初始化启动,预分配共享内存缓冲区。
该共享内存缓冲区也即共用预设内存空间。
步骤S502:设置系统内存可申请阈值下限(系统内存百分比或具体数值)。
也即,设置系统专用内存空间,系统专用内存空间大小可以是具体的数值,也可以是总内存空间大小的百分比。
步骤S503:设置各功能模块占用共享内存缓冲区上限。
也即,设置各功能模块的模块预设内存空间大小。
步骤S504:功能模块进行内存申请前,判断是否满足内存申请条件,满足则调用系统内存接口从共享内存缓冲区分配内存。
此时,内存申请条件为:1、当前可用总内存空间大小大于功能模块所需要申请的请求空间大小;2、功能模块的请求空间大小与该功能模块的模块占用内存空间大小之和小于模块预设内存空间大小。若满足该内存申请条件,则进行内存分配,否则,拒绝内存分配。且,本步骤中是在共享内存缓冲区分配内存与相关技术中只能在功能模块预先设定的独立的内存空间进行内存分配并不相同。
步骤S505:功能模块调用自定义内存释放接口将占用内存释放回共享内存缓冲区。
也即,当功能模块完成对内存空间的需求后,将该内存空间释放回回共享内存缓冲区,而不是全部内存空间或系统内存空间。
在一个实施例中,参见图6,图6为另一种具体的内存分配方法示例,该方法包括:
步骤S601:系统初始化启动,预分配共享内存缓冲区。
该共享内存缓冲区也即共用预设内存空间。
步骤S602:设置系统内存可申请阈值下限(系统内存百分比或具体数值)。
也即,设置系统专用内存空间,系统专用内存空间大小可以是具体的数值,也可以是总内存空间大小的百分比。
步骤S603:设置各功能模块占用共享内存缓冲区上限。
也即,设置各功能模块的模块预设内存空间大小。
步骤S604:设置各功能模块优先级及各优先级可从共享内存缓冲区申请内存的共享内存缓冲区剩余内存下限。
也即,分别为各功能模块分别配置预设优先级,并配置各预设优先级的优先级预设内存空间大小。
步骤S605:监测并统计各功能模块的内存使用信息及系统内存使用信息。
功能模块的内存使用信息包括各功能模块的模块占用内存空间大小。
系统内存使用信息,也即系统自身所占用的系统占用内存空间大小。
步骤S606:功能模块进行内存申请前,判断是否满足内存申请条件,满足则调用系统内存接口从共享内存缓冲区分配内存。
此时,内存申请条件为:1、当前可用总内存空间大小大于功能模块所需要申请的请求空间大小;2、功能模块的请求空间大小与该功能模块的模块占用内存空间大小之和小于模块预设内存空间大小;3、功能模块的请求优先级的请求优先级剩余内存空间大小加上功能模块所请求的请求空间大小小于该请求优先级的优先级预设内存空间大小;4、系统占用内存空间大小、请求空间大小以及各功能模块的模块占用内存空间大小之和小于该系统的总体可用内存大小。
若满足该内存申请条件,则进行内存分配,否则,拒绝内存分配。且,本步骤中是在共享内存缓冲区分配内存与相关技术中只能在功能模块预先设定的独立的内存空间进行内存分配并不相同。
步骤S607:功能模块调用自定义内存释放接口将占用内存释放回共享内存缓冲区。
也即,当功能模块完成对内存空间的需求后,将该内存空间释放回回共享内存缓冲区,而不是全部内存空间或系统内存空间。
在一个实施例中,参见图7,图7为另一种具体的内存分配方法示例,该方法包括:
步骤S701:系统初始化启动,预分配共享内存缓冲区。
该共享内存缓冲区也即共用预设内存空间。
步骤S702:设置系统内存可申请阈值下限(系统内存百分比或具体数值)。
也即,设置系统专用内存空间,系统专用内存空间大小可以是具体的数值,也可以是总内存空间大小的百分比。
步骤S703:设置各功能模块占用共享内存缓冲区上限。
也即,设置各功能模块的模块预设内存空间大小。
步骤S704:设置各功能模块优先级及各优先级可从共享内存缓冲区申请内存的共享内存缓冲区剩余内存下限。
也即,分别为各功能模块分别配置预设优先级,并配置各预设优先级的优先级预设内存空间大小。
步骤S705:监测并统计各功能模块的内存使用信息及系统内存使用信息。
功能模块的内存使用信息包括各功能模块的模块占用内存空间大小。
系统内存使用信息,也即系统自身所占用的系统占用内存空间大小。
步骤S706:功能模块进行内存申请前,判断是否满足内存申请条件,满足则调用系统内存接口从共享内存缓冲区分配内存;若不满足,从低优先级功能模块释放内存后,功能模块再尝试从共享内存缓冲区申请内存。
此时,内存申请条件为:1、当前可用总内存空间大小大于功能模块所需要申请的请求空间大小;2、功能模块的请求空间大小与该功能模块的模块占用内存空间大小之和小于模块预设内存空间大小;3、功能模块的请求优先级的请求优先级剩余内存空间大小加上功能模块所请求的请求空间大小小于该请求优先级的优先级预设内存空间大小;4、系统占用内存空间大小、请求空间大小以及各功能模块的模块占用内存空间大小之和小于该系统的总体可用内存大小。
若满足该内存申请条件,则进行内存分配,否则,拒绝内存分配。且,本步骤中是在共享内存缓冲区分配内存与相关技术中只能在功能模块预先设定的独立的内存空间进行内存分配并不相同。
步骤S707:功能模块调用自定义内存释放接口将占用内存释放回共享内存缓冲区。
也即,当功能模块完成对内存空间的需求后,将该内存空间释放回回共享内存缓冲区,而不是全部内存空间或系统内存空间。
在一个实施例中,参见图8,图8为另一种具体的内存分配方法示例,该方法包括:
步骤S801:监测并统计各功能模块的内存开销信息。
内存开销信息也即内存使用信息,包括各功能模块的模块占用内存空间大小。
步骤S802:功能模块从共享内存缓冲区申请内存。
步骤S803:功能模块内存占用有空闲,系统总内存足够,共享内存缓冲区不足,申请失败。
如上述实施例所述,乐观情况下,系统所占用的内存并不会超出原有划分给其的系统专用内存空间,但有时系统需要的内存空间较大,可能会超出系统专用内存空间,由于系统的优先级是最高级的,一旦有内存通常是保证系统的需求,故,一旦系统专用内存空间不够系统使用,就会将共用预设内存空间的一部分内存分配给系统使用,此时,即便该功能模块的模块剩余内存空间大小大于请求空间大小,但由于系统占用了一部分共享内存缓冲区的内存空间,和/或比功能模块优先级高的其他功能模块占用了该功能模块的内存空间,导致最终共享内存缓冲区的内存空间不足以满足功能模块的需求,此时,按照常规流程来看申请失败。
步骤S804:根据功能模块本次申请内存的大小,功能优先级从低到高遍历获取到功能优先级低于该功能模块的一块已被占用的匹配内存大小。
但若该功能模块的优先级较高,此时则需要从优先级低的功能模块所占用的内存空间中进行调配,以满足高优先级功能模块的需求。
可选的,可以根据功能优先级(预设优先级)从低到高依次便利各优先级的功能模块的当前占用内存空间,直到找到一个当前占用内存大小位于调整请求内存大小范围内的当前占用内存空间。调整请求内存大小范围为【请求空间大小,请求空间大小*(1+X%)】,其中X为本领域技术人员所设置的冗余量,X大于零小于100。
步骤S805:找到匹配的内存,释放该内存,申请成功;未找到匹配的内存,申请失败。
如果能够找到一个当前占用内存大小等于调整请求内存大小范围内的当前占用内存空间,将该当前占用内存空间进行释放,满足功能模块的请求,内存申请成功。否则,没有找到一个当前占用内存大小等于调整请求内存大小范围内的当前占用内存空间,申请失败。
可选的,若没有找到一个当前占用内存大小等于调整请求内存大小范围内的当前占用内存空间,也可以如上述实施例所述的方法,释放至少一个调配优先级(低于功能模块的预设优先级)中至少一个功能模块的至少一部分模块占用内存空间,直到释放后的各优先级调配内存空间大小之和大于请求空间大小,在释放后的共用预设内存空间中为请求模块分配所述请求空间大小的内存空间。例如,可以将预设优先级最低的调配优先级中各功能模块所占用的模块占用内存空间划分为多个占用小组,将占用小组的小组模块占用内存空间大小大于请求空间大小的占用小组中的功能模块的模块占用内存释放,以供请求模块使用。或者将占用小组的小组模块占用内存空间大小位于调整请求内存大小范围内的占用小组中的功能模块的模块占用内存释放,以供请求模块使用
下面再通过一个具体的实施例来示例性的说明上述内存分配方法,该具体的内存分配方法包括:
评估统计系统各功能模块满负荷时占用的最大内存,评估系统各功能模块在不同场景、不同时间的功能优先级(预设优先级),评估系统中功能模块可使用的内存上限(模块预设内存空间大小),确认共享缓冲区内存大小(共用预设内存空间大小),各功能优先级可从内存缓冲区申请内存的下限(优先级预设内存空间大小)。
智能安防产品在系统初始化启动时,获取设备的基本信息,包括型号信息、内存信息、系统版本信息等,根据型号信息及内存信息可以获取到该设备共享内存缓冲区的大小、功能模块优先级信息、内存门限等信息,其中获取的共享内存缓存区为所有功能模块可使用的内存总和,系统启动时预先分配共享内存缓冲区提供给所有功能模块使用。
例如,一款智能安防产品DDR(内存条)总大小是64M,系统内核需要32M,剩余32M可以分配给功能模块使用,预留2M作为剩余内存使用下限,剩余的30M即为所有功能模块可使用的最大使用内存(共享缓冲区大小,共用预设内存空间大小),功能模块可申请内存系统剩余内存下限为2M,功能模块划分为4个优先级:4/3/2/1(值越大优先级越高),功能优先级4可从共享缓冲区申请内存的剩余内存下限为0M,功能优先级3可从共享缓冲区申请内存的剩余内存下限为3M,功能优先级2可从共享缓冲区申请内存的剩余内存下限为6M,功能优先级1可从共享缓冲区申请内存的剩余内存下限为10M。根据获取所有系统的整个内存使用情况,内存管理模块会实时监控系统中各个功能模块的内存使用信息。
功能模块在申请内存时,基于该模块内存使用信息、共享缓冲区剩余内存信息、系统剩余内存信息、该模块当前时段处于的功能优先级信息,判断本次内存申请是否能成功,所有条件都满足则申请成功,否则申请失败。实施示例如下:
结合之前预设的内存参数,假设该产品有6个模块(分别为模块101/102/103/104/105/106,各模块内存占用上限分别为6M/10M/5M/5M/4M/16M),其中,当前阶段下,101处于功能优先级4,102/103处于功能优先级3,104/105处于功能优先级2,106处于功能优先级1。其中,系统各模块当前使用内存如下:模块101已使用3M内存,模块102已使用6M内存,模块103已使用4M内存,模块104使用了3M的内存,模块105已使用4M的内存,模块106已使用10M内存。各模块使用的内存总和为30M,此时共享缓冲区的内存已被完全使用,此时各模块从共享缓冲区申请内存时均失败。为了保证高优先级业务,当出现该场景时,执行如下策略:当高优先级功能模块从共享缓冲区申请内存失败时,释放低优先级功能模块的内存以满足高优先级功能模块的内存需求。例如,模块101申请2M内存,首先判断该模块已使用内存+本次内存申请未达到该模块内存使用上限,可以从共享内存缓冲区中申请内存,判断共享内存缓冲区内存使用为30M,已达共享内存缓冲区上限,此时从106模块中释放2M内存供101模块使用。
通过根据各系统总内存大小预先分配共享内存缓冲区,动态调整功能模块优先级,监测系统中各模块的内存开销信息,设置功能及功能优先级的内存使用门限及系统剩余内存最低门限;基于功能各模块的内存使用评估,确定各模块的内存使用上限,确定共享内存缓冲区大小。通过预先分配功能模块共享内存缓冲区,可减少系统内存的频繁申请与释放,减少内存碎片;通过对各功能设置功能模块优先级,针对同一功能模块不同时段动态调整优先级,可优先保障高优先级业务不中断;通过设置功能模块的内存占用门限上限,各功能优先级的内存使用门限下限以及系统剩余内存下限,监测统计系统运行过程中各功能模块的内存开销,功能模块共享内存缓冲区的方式,可减少系统内存碎片,降低系统出现因内存不足或者内存错误导致的崩溃、卡顿、宕机等问题,提高系统运行稳定性,进而提升用户体验及产品竞争力。
请参阅图9,本实施例提供了一种内存分配系统900,包括:
配置模块901,用于预先设置共用预设内存空间,共用预设空间为功能模块集中多个功能模块的共用内存空间,为各功能模块分别配置预设优先级,并配置各预设优先级的优先级预设内存空间大小;
响应模块902,用于获取请求模块的内存请求,响应于内存请求分别确定共用占用内存空间大小和请求优先级的请求优先级占用内存空间大小,请求优先级为请求模块的预设优先级;
确定模块903,用于分别确定共用剩余内存空间大小和请求优先级剩余内存空间大小,共用剩余内存空间大小根据共用预设内存空间大小和共用占用内存空间大小确定,请求优先级剩余内存空间大小根据请求优先级占用内存空间大小和请求优先级的优先级预设内存空间大小确定;
分配模块904,用于根据共用剩余内存空间大小、请求优先级剩余内存空间大小和内存请求的请求空间大小在共用预设内存空间中为请求模块分配内存。
在本实施例中,该内存分配系统实质上是设置了多个模块用以执行上述实施例中的方法,具体功能和技术效果参照上述方法实施例即可,此处不再赘述。
参见图10,本发明实施例还提供了一种电子设备1000,包括处理器1001、存储器1002和通信总线1003;
通信总线1003用于将处理器1001和存储器连接1002;
处理器1001用于执行存储器1002中存储的计算机程序,以实现如上述实施例一中的一个或多个所述的方法。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,
计算机程序用于使计算机执行如上述实施例一中的任一项所述的方法。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在设备时,可以使得该设备执行本申请实施例的实施例一所包含步骤的指令(instructions)。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (14)
1.一种内存分配方法,其特征在于,所述方法包括:
预先设置共用预设内存空间,所述共用预设内存空间为功能模块集中多个功能模块的共用内存空间,为各所述功能模块分别配置预设优先级,并配置各预设优先级的优先级预设内存空间大小;
获取请求模块的内存请求,响应于所述内存请求分别确定共用占用内存空间大小和请求优先级的请求优先级占用内存空间大小,所述请求优先级为所述请求模块的预设优先级;
分别确定共用剩余内存空间大小和请求优先级剩余内存空间大小,所述共用剩余内存空间大小根据所述共用预设内存空间大小和共用占用内存空间大小确定,所述请求优先级剩余内存空间大小根据所述请求优先级占用内存空间大小和所述请求优先级的优先级预设内存空间大小确定;
根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存。
2.如权利要求1所述的内存分配方法,其特征在于,根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存包括:
若所述请求优先级剩余内存空间大小大于所述请求空间大小,且所述共用剩余内存空间大小大于所述请求空间大小,在所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间。
3.如权利要求1所述的内存分配方法,其特征在于,根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存包括:
若所述请求优先级剩余内存空间大小小于所述请求空间大小,和/或所述共用剩余内存空间大小小于所述请求空间大小,分别获取各调配优先级的优先级调配内存空间大小,所述调配优先级包括低于所述请求优先级的至少一个预设优先级,所述优先级调配内存空间大小为所述调配优先级的优先级剩余内存空间大小;
根据所述共用剩余内存空间大小、所述请求空间大小和各所述优先级调配内存空间大小之和在所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间,其中,根据所述共用剩余内存空间大小、所述请求空间大小和各所述优先级调配内存空间大小之和在所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间包括,
若各所述优先级调配内存空间大小之和小于所述请求空间大小,和/或所述共用剩余内存空间大小小于所述请求空间大小,释放至少一个调配优先级中至少一个功能模块的至少一部分模块占用内存空间,直到释放后的各所述优先级调配内存空间大小之和大于所述请求空间大小,在释放后的所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间。
4.如权利要求1所述的内存分配方法,其特征在于,根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存包括:
获取各调配优先级的优先级调配内存空间大小,所述调配优先级包括低于所述请求优先级的至少一个预设优先级,所述优先级调配内存空间大小为所述调配优先级的优先级剩余内存空间大小;
若各所述优先级调配内存空间大小之和大于所述请求空间大小,且所述共用剩余内存空间大小大于所述请求空间大小,在所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间。
5.如权利要求3所述的内存分配方法,其特征在于,在所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间之后,所述方法还包括以下至少之一:
若第一目标优先级的优先级调配内存空间大小大于所述请求空间大小,将所述第一目标优先级的优先级剩余内存空间大小减少所述请求空间大小,所述第一目标优先级为优先级最低的所述调配优先级;
若所述第一目标优先级的优先级调配内存空间大小小于所述请求空间大小,减少第二目标优先级的优先级剩余内存空间大小,以使所述第二目标优先级所减少的内存空间大小等于所述请求空间大小,所述第二目标优先级包括所述第一目标优先级在内的至少两个所述调配优先级。
6.如权利要求3所述的内存分配方法,其特征在于,若各所述优先级调配内存空间大小之和大于所述请求空间大小,且所述共用剩余内存空间大小大于所述请求空间大小,在所述共用预设内存空间中为所述请求模块分配内存包括,
获取所述共用预设内存空间中各空闲内存空间的空闲大小;
根据所述请求空间大小从各所述空闲内存空间中确定目标内存空间,将所述目标内存空间分配给所述请求模块,其中,所述目标内存空间的确定方式包括以下至少之一:
若所述空闲内存空间的空闲大小等于所述请求空间大小,将所述空闲内存空间作为所述目标内存空间;
若各所述空闲内存空间的空闲大小均小于所述请求空间大小,将各所述空闲内存空间划分为一个或多个空闲小组,所述空闲小组中各所述空闲内存空间的空闲大小之和大于所述请求空间大小,将一所述空闲小组中各所述空闲内存空间作为所述目标内存空间;
若存在至少一个所述空闲内存空间的空闲大小大于所述请求空间大小,将空闲大小最大的所述空闲内存空间中确定为所述目标内存空间。
7.如权利要求3所述的内存分配方法,其特征在于,若各所述优先级调配内存空间大小之和小于所述请求空间大小,和/或所述共用剩余内存空间大小小于所述请求空间大小,所述方法还包括,
分别确定第一差异内存空间大小和第二差异内存空间大小,并确定目标差异内存空间大小,所述目标差异内存空间大小为所述第一差异内存空间大小和第二差异内存空间大小中较大的值,所述第一差异内存空间大小根据所述请求空间大小和各所述优先级调配内存空间大小之和确定,所述第二差异内存空间大小根据所述共用剩余内存空间大小和所述请求空间大小确定;
按照优先级低到高的顺序依次遍历所述调配优先级中功能模块的模块占用子内存空间,若各所述模块占用子内存空间中存在目标模块占用子内存空间达到分配条件,则释放所述目标模块占用子内存空间,并在释放后的所述共用预设内存空间中为所述请求模块分配所述请求空间大小的内存空间,其中,所述分配条件包括以下至少之一:
存在一模块占用子内存空间大小达到差异范围,所述差异范围的最小值等于或大于所述目标差异内存空间大小,所述差异范围的最大值大于所述目标差异内存空间大小;
多个模块占用子内存空间大小之和达到所述差异范围。
8.如权利要求1-7任一项所述的内存分配方法,其特征在于,根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小之前,所述方法还包括:
获取所述请求模块的模块预设内存空间大小和模块占用内存空间大小,确定所述请求模块的模块剩余内存空间大小;
若所述模块剩余内存空间大小大于所述请求空间大小,则根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存。
9.如权利要求1-7任一项所述的内存分配方法,其特征在于,所述方法还包括:
获取各功能模块的优先级调整参数,所述优先级调整参数包括当前光照强度、当前时间、当前日期、模块调用频次中至少之一;
根据所述优先级调整参数调整所述功能模块的预设优先级。
10.如权利要求1-7任一项所述的内存分配方法,其特征在于,响应于所述内存请求分别确定共用占用内存空间大小和请求优先级的请求优先级占用内存空间大小包括:
获取所述功能模块集中各功能模块的模块占用内存空间大小;
根据各功能模块的模块占用内存空间大小确定共用占用内存空间大小;
根据请求优先级的各功能模块的模块占用内存空间大小确定请求优先级占用内存空间大小。
11.如权利要求1-7任一项所述的内存分配方法,其特征在于,根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存之前,所述方法还包括:
分别获取系统预设内存空间大小和当前系统占用内存空间大小,并确定系统超用内存空间大小;
将所述共用剩余内存空间大小减去所述系统超用内存空间大小得到可用内存空间大小,并以可用剩余内存空间大小更新所述共用剩余内存空间大小。
12.一种内存分配系统,其特征在于,所述系统包括:
配置模块,用于预先设置共用预设内存空间,所述共用预设内存空间为功能模块集中多个功能模块的共用内存空间,为各所述功能模块分别配置预设优先级,并配置各预设优先级的优先级预设内存空间大小;
响应模块,用于获取请求模块的内存请求,响应于所述内存请求分别确定共用占用内存空间大小和请求优先级的请求优先级占用内存空间大小,所述请求优先级为所述请求模块的预设优先级;
确定模块,用于分别确定共用剩余内存空间大小和请求优先级剩余内存空间大小,所述共用剩余内存空间大小根据所述共用预设内存空间大小和共用占用内存空间大小确定,所述请求优先级剩余内存空间大小根据所述请求优先级占用内存空间大小和所述请求优先级的优先级预设内存空间大小确定;
分配模块,用于根据所述共用剩余内存空间大小、请求优先级剩余内存空间大小和所述内存请求的请求空间大小在所述共用预设内存空间中为所述请求模块分配内存。
13.一种电子设备,其特征在于,包括处理器、存储器和通信总线;
所述通信总线用于将所述处理器和存储器连接;
所述处理器用于执行所述存储器中存储的计算机程序,以实现如权利要求1-11中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,
所述计算机程序用于使所述计算机执行如权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210056736.5A CN114385370B (zh) | 2022-01-18 | 2022-01-18 | 内存分配方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210056736.5A CN114385370B (zh) | 2022-01-18 | 2022-01-18 | 内存分配方法、系统、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114385370A CN114385370A (zh) | 2022-04-22 |
CN114385370B true CN114385370B (zh) | 2022-10-25 |
Family
ID=81204046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210056736.5A Active CN114385370B (zh) | 2022-01-18 | 2022-01-18 | 内存分配方法、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114385370B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115391032A (zh) * | 2022-08-15 | 2022-11-25 | 上海慧程工程技术服务有限公司 | 一种用于工业物联网边缘设备的内存优化方法 |
CN115756872B (zh) * | 2022-12-13 | 2023-05-26 | 北京望京科技孵化服务有限公司 | 基于数据分析的计算机内存释放系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770125A (zh) * | 2004-11-04 | 2006-05-10 | 华为技术有限公司 | 一种分配内存的方法 |
US9274839B2 (en) * | 2012-09-27 | 2016-03-01 | Intel Corporation | Techniques for dynamic physical memory partitioning |
CN105302738B (zh) * | 2015-12-09 | 2018-09-11 | 北京东土科技股份有限公司 | 一种内存分配方法及装置 |
CN107066405A (zh) * | 2017-03-31 | 2017-08-18 | 联想(北京)有限公司 | 一种内存装置、互连子系统以及内存的共享方法 |
CN110297698B (zh) * | 2018-03-22 | 2024-02-13 | 财付通支付科技有限公司 | 一种多优先级动态限流方法、装置、服务器及存储介质 |
CN110858162B (zh) * | 2018-08-24 | 2022-09-23 | 华为技术有限公司 | 内存管理方法及装置、服务器 |
CN112148467A (zh) * | 2019-06-28 | 2020-12-29 | 微软技术许可有限责任公司 | 计算资源的动态分配 |
CN111857852B (zh) * | 2020-07-28 | 2022-05-27 | Oppo广东移动通信有限公司 | 驱动系统、信息处理方法、电子设备及存储介质 |
-
2022
- 2022-01-18 CN CN202210056736.5A patent/CN114385370B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114385370A (zh) | 2022-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108667748B (zh) | 一种控制带宽的方法、装置、设备和存储介质 | |
CN114385370B (zh) | 内存分配方法、系统、设备及介质 | |
CN110244901B (zh) | 任务分配方法及装置、分布式存储系统 | |
CN110661894A (zh) | 用户ip地址的分配方法、网络设备和存储介质 | |
CN102835068A (zh) | 用于管理系统资源的重新分配的方法和装置 | |
CN112214313A (zh) | 内存分配方法及相关设备 | |
CN111309644A (zh) | 一种内存分配方法、装置和计算机可读存储介质 | |
CN112749002A (zh) | 一种集群资源动态管理的方法和装置 | |
CN112214288B (zh) | 基于Kubernetes集群的Pod调度方法、装置、设备和介质 | |
CN109039694B (zh) | 一种面向业务的全局网络资源分配方法及装置 | |
CN111831504A (zh) | 监控方法、监控装置、计算机设备和介质 | |
CN111190719A (zh) | 优化集群资源分配的方法、装置、介质及电子设备 | |
CN115794396A (zh) | 资源分配的方法、系统和电子设备 | |
CN109522113B (zh) | 一种内存管理方法及装置 | |
CN111143071A (zh) | 基于mcs系统的缓存分区管理方法、系统及相关组件 | |
CN114217977B (zh) | 资源分配方法、装置、设备以及存储介质 | |
CN115878309A (zh) | 资源分配方法、装置、处理核、设备和计算机可读介质 | |
CN111090520B (zh) | 独占资源的用户分配方法、装置、电子设备及存储介质 | |
CN114253730A (zh) | 管理数据库内存的方法、装置、设备及存储介质 | |
CN110955522B (zh) | 一种协调性能隔离和数据恢复优化的资源管理方法及系统 | |
CN113630733A (zh) | 网络切片的分配方法、装置、计算机设备和存储介质 | |
CN107294765B (zh) | 一种网络功能虚拟化自适应信任管理方法 | |
CN117519988B (zh) | 一种基于raid的内存池动态调配方法、装置 | |
CN110728385B (zh) | 共享对象的分配方法、服务器及系统 | |
CN116709184A (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 |