内存优化方法、内存管理器、电子设备及存储介质与流程

未命名 07-18 阅读:86 评论:0
1.本公开实施例涉及内存管理的
技术领域
:,更具体地,涉及一种内存优化方法、内存管理器、电子设备及存储介质。
背景技术
::2.随着信息技术的快速发展,内存作为存储信息的载体,也在不断的更新换代。在某一个任务进程正在使用某个内存块时异常退出,导致该内存块会被异常占用。现有技术中,可以通过定期设定一个进程来检测是否有被异常占用的内存块,但会增加内存损耗。技术实现要素:3.本公开实施例的一个目的是提供一种内存优化方法、内存管理器、电子设备及存储介质的新的技术方案。4.根据本公开的第一方面,提供了一种内存优化方法,该方法应用于分布式的共享内存空间中,包括:5.响应于内存回收指令,内存管理器检测共享内存空间中各个内存块是否处于未释放的状态;其中,所述内存块携带有特征值,所述特征值包括尝试回收所述内存块的次数;6.在检测到各个内存块中的目标内存块处于未释放的状态的情况下,以设定步长调整所述目标内存块的目标特征值;7.在所述目标内存块的调整后的特征值符合设定条件的情况下,判断所述目标内存块是否处于被任务进程使用的状态。8.可选地,在所述判断所述目标内存块是否处于被任务进程使用的状态之后,还包括:9.在所述目标内存块处于被任务进程使用状态的情况下,将所述目标特征值重置为初始值;其中,所述目标特征值为所述初始值按照设定步长调整n次后的数据,n≥0且为整数。10.可选地,所述判断所述目标内存块是否处于被任务进程使用的状态,包括:11.获取所述目标内存块对应的内存使用记录,所述内存使用记录中包括所述目标内存块被不同进程所使用的历史记录;12.根据所述内存使用记录确定所述目标内存块是否处于被任务进程使用的状态。13.可选地,所述方法还包括:14.响应于任务进程的内存申请请求,判断所述共享内存空间中的静态分区中是否存在与所述内存申请请求相匹配的内存块,所述静态分区包括多个预先划分的且大小固定的内存块;15.在确定所述静态分区中存在与所述内存申请请求相匹配的内存块的情况下,从所述静态分区中选择内存块并分配给所述任务进程。16.可选地,在所述判断所述共享内存空间中的静态分区中是否存在与所述内存申请请求相匹配的内存块之后,所述方法还包括:17.在确定所述静态分区中不存在与所述内存申请请求相匹配的内存块的情况下,从所述共享内存空间中的动态分区中划分与所述内存申请请求相匹配的内存块并分配给所述任务进程。18.可选地,所述静态分区中预先划分的内存块按照下述方式生成:19.获取多个进程申请内存的频率和内存大小;20.在所述频率和/或所述内存大小满足预设规则的情况下,在所述共享内存空间的静态分区中预先划分多个大小固定的内存块。21.根据本公开的第二方面,还提供了一种内存管理器,该内存管理器包括:22.检测模块,用于响应于内存回收指令,检测共享内存空间中各个内存块是否处于未释放的状态;其中,所述内存块携带有特征值,所述特征值包括尝试回收所述内存块的次数;23.调整模块,用于在检测到各个内存块中的目标内存块处于未释放的状态的情况下,以设定步长调整所述目标内存块的目标特征值;24.判断模块,用于在所述目标内存块的调整后的特征值符合设定条件的情况下,判断所述目标内存块是否处于被任务进程使用的状态。25.根据本公开的第三方面,还提供了一种电子设备,包括存储器和处理器,所述存储器用于存储计算机程序;所述处理器用于执行所述计算机程序,以实现根据本公开第一方面所述的方法。26.根据本公开的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序在被处理器执行时实现根据本公开的第一方面所述的方法。27.根据本公开的第五方面,还提供了一种内存管理系统,该系统包括共享内存空间以及分布式的内存管理器;所述内存管理器提供面向任务进程的接口,用于从所述接口接收任务进程的内存请求,并在预设条件下执行如第一方面所述的方法。28.本公开实施例的一个有益效果在于,任务进程在向内存管理器申请内存块的情况下,任务管理器检测共享内存空间的各个内存块,并调整处于未释放状态的内存块的特征值。如果内存块的特征值符合设定条件,判断该内存块是否被其他的任务进程所使用,并在确定该内存块未被其他的任务进程所使用的情况下,可以将该内存块进行回收使用。对处于未释放且未被使用的内存块进行回收,即发生异常的内存块进行回收,有效减少额外增加检测内存块的任务进程,从而降低了内存消耗。29.通过以下参照附图对本公开的示例性实施例的详细描述,本公开实施例的其它特征及其优点将会变得清楚。附图说明30.被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开实施例的原理。31.图1是能够应用根据一个实施例的内存优化方法的内存管理系统的组成结构示意图;32.图2是根据一个实施例的内存优化方法的流程示意图;33.图3是根据一个实施例的体现内存块被写入的流程示意图;34.图4是根据一个实施例的体现内存块被读取的流程示意图;35.图5是根据另一个实施例的内存优化方法的流程示意图;36.图6是根据一个实施例的内存管理器的方框原理图;37.图7是根据一个实施例的电子设备的硬件结构示意图。具体实施方式38.以下将参考附图详细说明本技术的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。39.在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。40.另外,为了更好的说明本技术,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本技术同样可以实施。在一些实例中,对于本领域技术人员熟知的装置、手段、元件和电路未作详细描述,以便于凸显本技术的主旨。41.在本技术实施例中,“/”可以表示前后关联的对象是一种“或”的关系,例如,a/b可以表示a或b;“和/或”可以用于描述关联对象存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,其中a,b可以是单数或者复数。为了便于描述本技术实施例的技术方案,在本技术实施例中,可以采用“第一”、“第二”等字样对功能相同或相似的技术特征进行区分。该“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。在本技术实施例中,“示例性的”或者“例如”等词用于表示例子、例证或说明,被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。42.在本技术实施例中,对于一种技术特征,通过“第一”、“第二”、等区分该种技术特征中的技术特征,该“第一”、“第二”描述的技术特征间无先后顺序或者大小顺序。43.另外,为了更好的说明本技术,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本技术同样可以实施。在一些实例中,对于本领域技术人员熟知的装置、手段、元件和电路未作详细描述,以便于凸显本技术的主旨。44.本公开涉及应用于分布式管理的共享内存空间中的内存优化方法,这里的分布式管理的共享内存空间是供多个任务进程同时访问的内存空间。45.相关技术中,在分布式的共享内存管理机制下,共享内存的创建、写、读、释放、回收等都是由不确定的进程随机地进行操作。在这种不确定的、随机的操作下,往往需要设置专门的安全机制以保证进程的每个操作是同步且安全的,比如原子锁机制,本公开默认已经包含了这种安全机制。这种安全机制一般包含一些状态保护机制,具体来说,当某个任务进程在使用某个内存块期间,因出现异常情况退出而不能正常的释放掉对该内存块的使用权,将导致该内存块一直处于保护状态,不能再提供给其它任务进程来使用,直到人为干预,或重新初始化进行清理。46.为了实现将共享内存空间中异常的内存块进行释放,相关技术中一般会单独设置一个任务进程。该任务进程用于定期检测内存空间中是否存在异常的内存块,并将异常的内存块进行释放,但该任务进程也会存在较大的内存消耗。其中,内存块异常是表示任务进程在发生闪退、掉线等突发情况下该内存块显示为被任务进程使用但实际未被使用的状态。47.为了降低内存损耗,本公开实施例提出基于任务进程触发内存管理器检测共享内存空间中的内存块,并将异常的内存块释放的技术方案。该技术方案不必设置一个专门的任务进程用于检测共享内存空间中的异常内存块,在满足一定条件的情况下,任何调用内存管理器的任务进程都可以触发异常内存块检测的流程,因此,本技术各个实施例提出的内存优化方法不仅可以及时清理共享内存空间中的异常内存块,还可以大大节约计算资源。48.《系统实施例》49.图1是能够应用所述内存优化方法的内存管理系统其中一个实施例的组成结构示意图。如图1所示,该内存管理系统包括内存管理器100以及共享内存空间200,该内存管理系统可以应用于电子设备1000上。50.电子设备1000可以包括手机、可折叠电子设备、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobilepersonalcomputer,umpc)、上网本、蜂窝电话、个人数字助理(personaldigitalassistant,pda)、增强现实(augmentedreality,ar)设备、虚拟现实(virtualreality,vr)设备、人工智能(artificialintelligence,ai)设备、可穿戴式设备、车载设备、智能家居设备、或智慧城市设备中的至少一种。本技术实施例对该电子设备1000的具体类型不作特殊限制。51.内存管理器100为分布式的管理方式,即,该内存管理器100可以允许多个任务进程同时申请共享内存空间中的内存块。其中,所述任务进程可以是用户在操作电子设备1000下生成的,也可以是在电子设备1000的内部触发机制生成,本技术在此不做限制。任务进程可以向内存管理器100发送内存请求。52.本公开实施例中,分布式的内存管理器100提供面向任务进程的接口和库函数。其中,接口可以为应用编程接口,如应用程序编程接口(applicationprogramminginterface,api),api用来提供应用程序基于某软件或硬件得以访问的一组例程,库函数可以提供用于执行所述内存优化方法所需的各种服务。在任务进程向内存管理器100发送内存请求的情况下,内存管理器100在满足预设条件下可将共享内存空间中的内存块分配给任务进程。预设条件是任务进程在向内存管理器100申请内存块时可以触发将异常的内存块清理并回收的条件。内存管理器100通过上述接口接收到任务进程内存请求,利用库函数将共享内存空间中的空闲内存块分配给任务进程。53.应用于本公开实施例中,内存管理器100的存储器用于存储计算机程序,该计算机程序用于控制该内存管理器100处理器进行操作以实施根据任意实施例的内存优化方法。技术人员可以根据本公开实施例的方案设计计算机程序。该计算机程序如何控制处理器进行操作,这是本领域公知,故在此不再详细描述。54.《方法实施例》55.图2是根据一个实施例的内存优化方法的流程示意图。本实施例的实施主体例如为图1中的内存管理器100。56.如图2所示,本实施例的内存优化方法应用于分布式的共享内存空间中,该方法可以包括如下步骤s210~s230:57.步骤s210,响应于内存回收指令,内存管理器检测共享内存空间中各个内存块是否处于未释放的状态;其中,内存块携带有特征值,特征值包括尝试回收内存块的次数。58.其中,内存块在被任务进程使用或者任务进程发生异常的情况下均认为是处于未释放的状态。59.其中,共享内存空间中每一个内存块均携带特征值,特征值可以包括处于未释放的状态的持续时长、表示处于未释放的状态的具体数字以及尝试回收内存块的次数中至少一项。具体以特征值为尝试回收内存块的次数为例,在内存管理器尝试回收处于未释放的状态的内存块的情况下,内存块的尝试回收内存块的次数会发生相应的改变。其中的尝试回收内存块的次数可以表示为尝试回收次数(tryrestoretimes)。60.在一些示例中,内存管理器内部可以设定触发机制使得内存管理器可以每隔设定周期响应内存回收指令,设定周期可以是1秒,可以是1分钟,也可以是5分钟,此处不做具体限定。并且,在一些实施例中,可以针对包含读操作或者写操作的任务进程,内存管理器也可以响应内存回收指令。内存管理器检测共享内存空间中各个内存块是否显示为被其他的任务进程使用,即检测各个内存块是否处于未释放的状态。从而实现内存管理器在响应内存回收指令之后轮询每一个内存块的状态。61.步骤s220,在检测到各个内存块中的目标内存块处于未释放的状态的情况下,以设定步长调整目标内存块的目标特征值。62.在一些示例中,内存管理器检测到目标内存块处于未释放的状态的情况下,可以对目标内存块携带的目标特征值按照设定步长进行调整。其中,目标特征值可以为数字,可以为字母,此处不做具体限定。以特征值为数字为例,例如:目标内存块在未被检测之前其目标特征值可以为“4”,设定步长可以为“1”,目标内存块检测到为处于未释放的状态的情况下,目标特征值调整为“3”。63.步骤s230,在目标内存块的调整后的特征值符合设定条件的情况下,判断目标内存块是否处于被任务进程使用的状态。64.在一些示例中,以特征值为尝试回收内存块的次数为例,设定条件可以为目标特征值到达设定值,设定值可以是“0”,可以是“1”,也可以是“‑3”。在这些示例中,如果调整后的目标特征值到达“0”,触发上述的回收机制,即判断目标内存块是否处于被任务进程使用的状态,并在处于未被任务进程使用的状态的情况下,将目标内存块进行回收处理,目标内存块在经过回收处理之后处于空闲的状态,以供内存管理器进行调用。如果调整后的目标特征值未到达“0”的情况下,可以在内存管理器再次响应内存回收指令的情况下,继续按照设定步长对目标特征值进行调整。65.在一些示例中,以特征值为处于未释放状态的持续时长为例,设定条件可以为目标特征值到达设定时间,设定时间可以是10秒,可以是1分钟,也可以是5分钟,此处不做特殊限定。在这些示例中,如果目标特征值到达设定时间,确定目标内存块处于未被任务进程使用的状态,并触发上述的回收机制。66.在一些示例中,以特征值为表示处于未释放的状态的具体数字为例,处于未释放的状态可以表示为“0”,处于释放的状态可以表示为“1”。设定条件可以为目标特征值为“0”的情况下,确定目标内存块处于未被任务进程使用的状态,并触发上述的回收机制。67.在一个实施例中,在步骤s230之后,还包括以下内容:在目标内存块处于被任务进程使用状态的情况下,将目标特征值重置为初始值;其中,目标特征值为初始值按照设定步长调整n次后的数据,n≥0且为整数。68.在一些示例中,继续以特征值为尝试回收内存块的次数为例,每一个内存块的初始值均为一个固定次数,该固定次数可以是“5”。69.在这些示例中,目标内存块在被某一个任务进程正在写入,相应地,可以将目标内存块的目标特征值重置为“5”。换句话说,通过对任务进程没有退出的内存块的特征值进行重置,可以有效减少内存块在被正常写入的情况下被释放的情况发生,进一步提高对共享内存空间优化的准确性。70.在一个实施例中,步骤s230具体包括以下内容:获取目标内存块对应的内存使用记录,内存使用记录中包括目标内存块被不同进程所使用的历史记录;根据内存使用记录确定目标内存块是否处于被任务进程使用的状态。71.其中,内存管理器可以通过访问预先设定的信息表,获取目标内存块对应的内存使用记录。该信息表(即infotable)用于记录共享内存空间中每一个内存块是否被不同进程所使用的历史记录。进一步的,该信息表可以记录共享内存空间中每一个内存块被占用的任务进程的进程标识符,以通过信息表中的目标内存块是否记录有进程标识符来判断目标是否被任务进程占用。72.在一个示例中,继续以目标特征值为数字为例,在调整后的目标特征值到达“0”的情况下,内存管理器可以访问信息表,以确定目标内存块是否处于被任务进程使用的状态。如果目标内存块处于未被任务进程使用的状态,将该目标内存进行强制回收。73.在一个示例中,在检测到各个内存块中的目标内存块处于未释放的状态之后,获取使用目标内存块的任务进程的操作类型,筛选出操作类型为读操作的任务进程所对应的目标内存块。相应的以设定步长调整目标内存块的目标特征值的过程可以包括:以设定步长调整操作类型为读操作的任务进程所对应的目标内存块的目标特征值。74.在一个示例中,如图3所示,任务进程a为写操作的任务进程,任务进程a向内存管理器100申请内存块。在内存管理器100从共享内存空间200中分配内存块mem:1的使用权给任务进程a时,任务进程a可以对内存块mem:1进行写的操作。在任务进程a写入失败的情况下,以设定步长调整内存块的特征值。如果调整后的特征值符合上述设定条件,通过信息表确定将内存块mem:1回收或者重置特征值。75.在另一个示例中,如图4所示,任务进程b为读操作的任务进程,任务进程b向内存管理器100申请内存块。任务进程b可以对内存管理器100申请共享内存空间200中的内存块mem:2,以进行读取的操作,在任务进程b读取失败的情况下,无需触发上述的回收机制。76.在这些示例中,由于任务进程异常退出会出现内存块写保护的状态或者读保护的状态,且读取失败的情况下不会触发回收机制,因此内存管理器100可以筛选出操作类型为读操作的任务进程所对应的内存块以调整特征值,以节省计算资源。77.如果任务进程a写入至内存块成功,将内存块的特征值重置为初始值,随后将任务进程a的使用者信息添加到信息表中。其中,使用者信息可以包含任务进程的进程标识符(pid)、进程地址和进程名称等等。78.更值得一提的是,如图4所示,在任务进程b读取内存块成功的情况下,内存块的特征值也可以重置为初始值,并将任务进程b的使用者信息添加到相应的信息表中,以减少其他任务进程会占用内存块的情况。79.在一个实施例中,如图5所示,本实施例的内存优化方法,该方法可以包括如下步骤s510~s520:80.步骤s510,响应于任务进程的内存申请请求,判断共享内存空间中的静态分区中是否存在与内存申请请求相匹配的内存块,静态分区包括多个预先划分的且大小固定的内存块。81.本公开实施例中,共享内存空间可以预先划分成静态分区和动态分区。其中,静态分区可以包括共享内存空间中预先向操作系统申请的固定不变的一个或者多个内存块,属于固定不变的内存区域,用于支持需求频率比较高的内存块的分配。而动态分区可以根据任务进程申请的需求,动态地向操作系统申请独立的内存块。动态分区中的内存块数量有多个,会根据实际使用情况动态变更内存块的数量和大小。在本公开的一个实施例中,所述静态分区中的内存块小于预设阈值,例如都小于16kb,或者都小于8kb,由于共享内存空间的大小往往是固定的,设置静态分区中均为较小的内存块,可以增大动态分区中内存设置的灵活性。82.步骤s520,在确定静态分区中存在与内存申请请求相匹配的内存块的情况下,从静态分区中选择内存块并分配给任务进程。83.在一些示例中,任务进程可以向内存管理器发送内存申请请求,内存管理器确定共享内存空间中的静态分区,并将静态分区中的各个内存块分别与内存申请请求中需求的内存量进行比较,将静态分区中达到满足所述内存量的一个内存块分配给该任务进程。84.在一个实施例中,在步骤s510之后,还包括:在确定静态分区中不存在与内存申请请求相匹配的内存块的情况下,从共享内存空间中的动态分区中划分与内存申请请求相匹配的内存块并分配给任务进程。85.本技术实施例中,如果静态分区中未存在与任务进程的内存申请请求相匹配,可以从动态分区中分配内存块给任务进程。在一些示例中,可以选取满足任务进程需求的内存量且动态分区中相对最小的内存块分配给任务进程,也可以选取满足任务进程需求的内存量且动态分区中相对数量最少的内存块组分配给任务进程,其中,内存块组可以包含一个或多个内存块,也可以根据任务进程使用内存块的频率来选取动态分区中使用频率相近的内存块给任务进程,此处的分配方式不做具体限定。换句话说,在静态分区的内存块无法适配任务进程的内存申请请求的情况下,可以分配动态分区的内存块,减少任务进程等待静态分区中空闲或者符合需求的内存块较长时间的情况发生。86.在一个实施例中,静态分区中预先划分的内存块按照下述方式生成:获取多个进程申请内存的频率和内存大小;在频率和/或内存大小满足预设规则的情况下,在共享内存空间的静态分区中预先划分多个大小固定的内存块。87.其中,频率为任务进程在设定时间段内申请内存块的次数,设定时间段可以为10秒,可以为1分钟,此处不做特殊限定。88.在一个示例中,预设规则可以是在任务进程申请内存块的频率大于设定频率和/或所申请内存块的大小稳定在设定内存量的情况下,则在静态分区中预先划分大小为所述设定内存量的内存块。其中,设定频率可以为50次/秒,可以为5次/秒,此处不做特殊限定。也就是说,通过统计多个任务进程在历史上申请内存块的大小和频次,可以得出哪些大小的内存块比较经常使用,从而在静态分区中预先划分这些大小的内存块,例如,经过统计发现,16kb和128b均为各个任务进程经常使用的内存大小,那么可以在静态分区中划分若干个16kb的内存块和若干个128b的内存块。需要说明的是,还可以预先存储多个任务进程与其申请频次较高的内存大小,例如,可以将任务进程的标识与所述任务进程对应的内存大小关联,这样,在该任务进程申请内存块的情况下,可以根据所述任务进程的标识确定其对应的内存大小,并从静态分区中分配满足所述内存大小的内存块给所述任务进程。89.在本公开的一个实施例中,所述方法还包括:90.在确定所述动态分区中不存在与所述内存申请请求相匹配的内存块的情况下,触发生成所述内存回收指令。91.本公开实施例中,如果动态分区中的现有空闲内存块都不能满足需求,可以触发步骤210-步骤230的内存回收机制,对异常内存进行回收,然后重新分配与所述内存申请请求相匹配的内存块给所述任务进程。92.《设备实施例一》93.图6是根据一个实施例的内存管理器的原理框图。如图6所示,该内存管理器100可以包括:94.检测模块610,用于响应于内存回收指令,检测共享内存空间中各个内存块是否处于未释放的状态;其中,所述内存块携带有特征值,所述特征值包括尝试回收所述内存块的次数;95.调整模块620,用于在检测到各个内存块中的目标内存块处于未释放的状态的情况下,以设定步长调整所述目标内存块的目标特征值;96.判断模块630,用于在所述目标内存块的调整后的特征值符合设定条件的情况下,判断所述目标内存块是否处于被任务进程使用的状态。97.可选地,重置模块,用于在所述目标内存块处于被任务进程使用状态的情况下,将所述目标特征值重置为初始值;其中,所述目标特征值为所述初始值按照设定步长调整n次后的数据,n≥0且为整数。98.可选地,判断模块630,还用于获取所述目标内存块对应的内存使用记录,所述内存使用记录中包括所述目标内存块被不同进程所使用的历史记录;根据所述内存使用记录确定所述目标内存块是否处于被任务进程使用的状态。99.可选地,内存管理器还包括:响应模块,用于响应于任务进程的内存申请请求,判断所述共享内存空间中的静态分区中是否存在与所述内存申请请求相匹配的内存块,所述静态分区包括多个预先划分的且大小固定的内存块;100.分配模块,用于在确定所述静态分区中存在与所述内存申请请求相匹配的内存块的情况下,从所述静态分区中选择内存块并分配给所述任务进程。101.可选地,内存管理器还包括:划分模块,用于在确定所述静态分区中不存在与所述内存申请请求相匹配的内存块的情况下,从所述共享内存空间中的动态分区中划分与所述内存申请请求相匹配的内存块并分配给所述任务进程。102.《设备实施例二》103.图7是根据另一个实施例的电子设备的硬件结构示意图。104.如图7所示,该电子设备1000包括处理器710和存储器720,该存储器720用于存储可执行的计算机程序,该处理器710用于根据该计算机程序的控制,执行如以上任意方法实施例的方法。105.以上内存管理器100的各模块可以由本实施例中的处理器710执行存储器720存储的计算机程序实现,也可以通过其他结构实现,在此不做限定。106.本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。107.计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。108.这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。109.用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。110.这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。111.这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。112.也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。113.附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。114.以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本
技术领域
:的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。当前第1页12当前第1页12
技术特征:
1.一种内存优化方法,其特征在于,所述方法应用于分布式的共享内存空间中,包括:响应于内存回收指令,内存管理器检测共享内存空间中各个内存块是否处于未释放的状态;其中,所述内存块携带有特征值,所述特征值包括尝试回收所述内存块的次数;在检测到各个内存块中的目标内存块处于未释放的状态的情况下,以设定步长调整所述目标内存块的目标特征值;在所述目标内存块的调整后的特征值符合设定条件的情况下,判断所述目标内存块是否处于被任务进程使用的状态。2.根据权利要求1所述的方法,其特征在于,在所述判断所述目标内存块是否处于被任务进程使用的状态之后,还包括:在所述目标内存块处于被任务进程使用状态的情况下,将所述目标特征值重置为初始值;其中,所述目标特征值为所述初始值按照设定步长调整n次后的数据,n≥0且为整数。3.根据权利要求1所述的方法,所述判断所述目标内存块是否处于被任务进程使用的状态,包括:获取所述目标内存块对应的内存使用记录,所述内存使用记录中包括所述目标内存块被不同进程所使用的历史记录;根据所述内存使用记录确定所述目标内存块是否处于被任务进程使用的状态。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于任务进程的内存申请请求,判断所述共享内存空间中的静态分区中是否存在与所述内存申请请求相匹配的内存块,所述静态分区包括多个预先划分的且大小固定的内存块;在确定所述静态分区中存在与所述内存申请请求相匹配的内存块的情况下,从所述静态分区中选择内存块并分配给所述任务进程。5.根据权利要求4所述的方法,其特征在于,在所述判断所述共享内存空间中的静态分区中是否存在与所述内存申请请求相匹配的内存块之后,所述方法还包括:在确定所述静态分区中不存在与所述内存申请请求相匹配的内存块的情况下,从所述共享内存空间中的动态分区中划分与所述内存申请请求相匹配的内存块并分配给所述任务进程。6.根据权利要求1所述的方法,其特征在于,所述静态分区中预先划分的内存块按照下述方式生成:获取多个进程申请内存的频率和内存大小;在所述频率和/或所述内存大小满足预设规则的情况下,在所述共享内存空间的静态分区中预先划分多个大小固定的内存块。7.一种分布式的内存管理器,其特征在于,所述内存管理器包括:检测模块,用于响应于内存回收指令,检测共享内存空间中各个内存块是否处于未释放的状态;其中,所述内存块携带有特征值,所述特征值包括尝试回收所述内存块的次数;调整模块,用于在检测到各个内存块中的目标内存块处于未释放的状态的情况下,以设定步长调整所述目标内存块的目标特征值;判断模块,用于在所述目标内存块的调整后的特征值符合设定条件的情况下,判断所述目标内存块是否处于被任务进程使用的状态。
8.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-6任一项所述的内存优化方法的步骤。9.一种计算机可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1-6任一项所述的内存优化方法的步骤。10.一种内存管理系统,其特征在于,所述系统包括共享内存空间以及分布式的内存管理器;所述内存管理器提供面向任务进程的接口,用于从所述接口接收任务进程的内存请求,并在预设条件下执行如权利要求1-6任一项所述的内存优化方法。

技术总结
本公开涉及一种内存优化方法、内存管理器、电子设备及存储介质,属于内存管理的技术领域,方法应用于分布式的共享内存空间中,该方法包括:响应于内存回收指令,内存管理器检测共享内存空间中各个内存块是否处于未释放的状态;其中,内存块携带有特征值,特征值包括尝试回收内存块的次数;在检测到各个内存块中的目标内存块处于未释放的状态的情况下,以设定步长调整目标内存块的目标特征值;在目标内存块的调整后的特征值符合设定条件的情况下,判断目标内存块是否处于被任务进程使用的状态。态。态。


技术研发人员:王超
受保护的技术使用者:上海云骥跃动智能科技发展有限公司
技术研发日:2023.03.24
技术公布日:2023/7/17
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐