内存管理方法、装置、设备及存储介质制造方法及图纸

技术编号:37433460 阅读:18 留言:0更新日期:2023-05-05 19:48
本申请公开了一种内存管理方法、装置、设备及存储介质,属于内存分配技术领域,该方法包括:本申请通过当接收到内存申请时,基于所述内存申请所需的内存块的内存大小,从基于用户频繁使用的内存块的内存大小,从原始内存资源中申请得到的预设内存池中进行内存分配;即,若用户频繁使用某种大小的内存块,则当其进行内存申请时,即可从预设内存池中进行内存分配,在内存使用结束后,将申请的内存释放至所述预设内存池,由于需要的内存块大小与申请的内存块大小对应,且使用之后,释放的内存块大小也对应,因此,即使频繁使用这类大小的内存块也不会产生内存碎片,在动态内存分配过程中很大程度上降低了内存碎片的产生,提高了应用运行的流畅度。用运行的流畅度。用运行的流畅度。

【技术实现步骤摘要】
内存管理方法、装置、设备及存储介质


[0001]本申请涉及内存管理
,尤其涉及一种内存管理方法、装置、设备及存储介质。

技术介绍

[0002]目前,大多数应用在运行过程中由于需要频繁地进行动态内存分配,不可避免的引入了内存碎片问题,具体表现在过多的内存碎片导致有效的内存无法利用,需要分配内存时内存不足,影响应用运行的流畅度。
[0003]因此,现有技术中存在因内存碎片过多导致应用运行不畅的技术问题。

技术实现思路

[0004]本申请的主要目的在于提供一种内存管理方法、装置、设备及存储介质,旨在解决因内存碎片过多导致应用运行不畅的技术问题。
[0005]为实现上述目的,本申请提供一种内存管理方法,所述内存管理方法包括以下步骤:
[0006]当接收到内存申请时,基于所述内存申请所需的内存块的内存大小,从预设内存池中进行内存分配;
[0007]在内存使用结束后,将申请的内存释放至对应的预设内存池;
[0008]其中,所述预设内存池是基于用户频繁使用的内存块的内存大小,从原始内存资源中申请得到的。
[0009]在本申请的一种可能的实施方式中,所述当接收到内存申请时,基于所述内存申请所需的内存块的内存大小,从预设内存池中进行内存分配的步骤之前,所述方法还包括:
[0010]从用户频繁使用的各种内存块中筛选出大小小于预设阈值的目标内存块;
[0011]基于各目标内存块的内存大小,从所述原始内存资源中申请得到多个预设内存池。
[0012]在本申请的一种可能的实施方式中,所述基于各目标内存块的内存大小,从所述原始内存资源中申请得到多个预设内存池的步骤,包括:
[0013]基于各目标内存块的内存大小,以及内存池的预设大小,计算得到每个内存池中所述各目标内存块的可申请数量;
[0014]基于所述各目标内存块的内存大小,以及所述可申请数量,从所述原始内存资源中申请得到每个内存池的内存空间;
[0015]在每个内存池中,将所述内存空间按所述可申请数量进行拆分,得到大小相同的内存块。
[0016]在本申请的一种可能的实施方式中,所述基于所述内存申请所需的内存块的内存大小,从预设内存池中进行内存分配的步骤之前,所述方法还包括:
[0017]确定所述内存申请所需的内存块的内存大小是否大于所述预设阈值;
[0018]若大于所述预设阈值,则从所述原始内存资源中分配内存。
[0019]在本申请的一种可能的实施方式中,所述若大于所述预设阈值,则从所述原始内存资源中分配内存的步骤之后,所述方法还包括:
[0020]在内存使用结束后,将申请的内存释放至所述原始内存资源中。
[0021]在本申请的一种可能的实施方式中,所述当接收到内存申请时,基于所述内存申请所需的内存块的内存大小,从预设内存池中进行内存分配的步骤,包括:
[0022]当接收到内存申请时,判断满足所述内存申请的内存块是否与预设内存池中内存块的内存大小相同,其中,所述满足所述内存申请的内存块是单一内存块;
[0023]若相同,则从对应的预设内存池中分配内存。
[0024]在本申请的一种可能的实施方式中,所述基于所述内存申请所需的内存块的内存大小,从预设内存池中进行内存分配的步骤之后,所述方法还包括:
[0025]若所述对应的预设内存池中不存在空闲内存块,则从指针指向的下一个具有空闲内存块,且空闲内存块的内存大小与所述单一内存块相同的预设内存池中分配内存。
[0026]本申请还提供一种内存管理装置,所述装置包括:
[0027]内存分配模块,用于当接收到内存申请时,基于所述内存申请所需的内存块的内存大小,从预设内存池中进行内存分配;
[0028]内存释放模块,用于在内存使用结束后,将申请的内存释放至对应的预设内存池;其中,所述预设内存池是基于用户频繁使用的内存块的内存大小,从原始内存资源中申请得到的。
[0029]本申请还提供一种内存管理设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的内存管理程序,所述内存管理程序配置为实现如上述任一项所述的内存管理方法的步骤。
[0030]本申请还提供一种存储介质,所述存储介质上存储有内存管理程序,所述内存管理程序被处理器执行时实现如上述任一项所述的内存管理方法的步骤。
[0031]本申请提供一种内存管理方法,相较于现有技术中应用在运行过程中由于需要频繁地进行动态内存分配,不可避免的引入了内存碎片问题,本申请通过当接收到内存申请时,基于所述内存申请所需的内存块的内存大小,从基于用户频繁使用的内存块的内存大小,从原始内存资源中申请得到的预设内存池中进行内存分配;即,若用户频繁使用某种大小的内存块,则当其进行内存申请时,即可从预设内存池中进行内存分配,在内存使用结束后,将申请的内存释放至所述预设内存池,由于需要的内存块大小与申请的内存块大小对应,且使用之后,释放的内存块大小也对应,因此,即使频繁使用这类大小的内存块也不会产生内存碎片,在动态内存分配过程中很大程度上降低了内存碎片的产生,提高了应用运行的流畅度。
附图说明
[0032]图1为本申请一种内存管理方法的第一实施例的流程示意图;
[0033]图2为本申请第一实施例的内存管理方法的第一场景示意图;
[0034]图3为本申请第一实施例的内存管理方法的第二场景示意图;
[0035]图4为本申请第一实施例的内存管理方法的第三场景示意图;
[0036]图5是本申请实施例方案涉及的硬件运行环境的内存管理设备的结构示意图;
[0037]图6为本申请第一实施例的内存管理装置示意图。
[0038]本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0039]应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。尽管在本文可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本文范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。
[0040]本申请实施例提供了一种内存管理方法,参照图1,在本实施例中,所述内存管理方法包括:
[0041]步骤S10:当接收到内存申请时,基于所述内存申请所需的内存块的内存大小,从预设内存池中进行内存分配;
[0042]步骤S20:在内存使用结束后,将申请的内存释放至对应的预设内存池;其中,所述预设内存池是基于用户频繁使用的内存块的内存大小,从原始内存资源中申请得到的。
[0043]本实施例旨在:通过基于用户频繁使用的内存块的内存大小,从原始内存资源中申请得到的预设内存池,对用户的内存申请进行内存分配,以降低了内存碎片的产生,提高了应用运行的流畅度。
[0044]作为一种示例,所述内存管理方本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存管理方法,其特征在于,所述内存管理方法,包括以下步骤:当接收到内存申请时,基于所述内存申请所需的内存块的内存大小,从预设内存池中进行内存分配;在内存使用结束后,将申请的内存释放至对应的预设内存池;其中,所述预设内存池是基于用户频繁使用的内存块的内存大小,从原始内存资源中申请得到的。2.如权利要求1所述的内存管理方法,其特征在于,所述当接收到内存申请时,基于所述内存申请所需的内存块的内存大小,从预设内存池中进行内存分配的步骤之前,所述方法还包括:从用户频繁使用的各种内存块中筛选出大小小于预设阈值的目标内存块;基于各目标内存块的内存大小,从所述原始内存资源中申请得到多个预设内存池。3.如权利要求2所述的内存管理方法,其特征在于,所述基于各目标内存块的内存大小,从所述原始内存资源中申请得到多个预设内存池的步骤,包括:基于各目标内存块的内存大小,以及内存池的预设大小,计算得到每个内存池中所述各目标内存块的可申请数量;基于所述各目标内存块的内存大小,以及所述可申请数量,从所述原始内存资源中申请得到每个内存池的内存空间;在每个内存池中,将所述内存空间按所述可申请数量进行拆分,得到大小相同的内存块。4.如权利要求2所述的内存管理方法,其特征在于,所述基于所述内存申请所需的内存块的内存大小,从预设内存池中进行内存分配的步骤之前,所述方法还包括:确定所述内存申请所需的内存块的内存大小是否大于所述预设阈值;若大于所述预设阈值,则从所述原始内存资源中分配内存。5.如权利要求4所述的内存管理方法,其特征在于,所述若大于所述预设阈值,则从所述原始内存资源中分配内存的步骤...

【专利技术属性】
技术研发人员:汪洪
申请(专利权)人:歌尔科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1