内存分配方法、装置、存储介质及电子设备制造方法及图纸

技术编号:24010272 阅读:29 留言:0更新日期:2020-05-02 01:30
本申请公开了一种内存分配方法、装置、存储介质及电子设备。该方法包括:当接收到线程发送的内存分配请求时,确定所述内存分配请求对应的内存需求量;判断所述内存需求量是否小于预设阈值;若所述内存需求量小于预设阈值,则从第一内存空间中靠近第一内存地址的空闲空间中,确定大小与所述内存需求量匹配的目标内存空间;若所述内存需求量不小于预设阈值,则从第一内存空间中靠近第二内存地址的空闲空间中,确定大小与所述内存需求量匹配的目标内存空间;将所述目标内存空间对应的内存地址发送至所述线程。本申请可以减少内存碎片化的程度,提高内存利用率。

Memory allocation method, device, storage medium and electronic equipment

【技术实现步骤摘要】
内存分配方法、装置、存储介质及电子设备
本申请属于电子
,尤其涉及一种内存分配方法、装置、存储介质及电子设备。
技术介绍
在操作系统中,通常采用动态内存管理机制,内核将虚拟内存分配给有内存需求的线程,线程执行完毕后,再将内存释放,以供内核继续将内存分配给有内存需求的其他线程。相关技术的内存分配方案,当大小内存交替申请时,小内存释放后留下的空闲内存块分布在内存空间各个不连续的区域,从而造成内存碎片化,导致内存利用率较低。
技术实现思路
本申请实施例提供一种内存分配方法、装置、存储介质及电子设备,可以减少内存碎片化的程度,提高内存利用率。本申请实施例提供一种内存分配方法,包括:当接收线程发送的内存分配请求时,确定所述内存分配请求对应的内存需求量;判断所述内存需求量是否小于预设阈值;若所述内存需求量小于预设阈值,则从第一内存空间中靠近第一内存地址的空闲空间中,确定大小与所述内存需求量匹配的目标内存空间;若所述内存需求量不小于预设阈值,则从第一内存空间中靠近第二内存地址的空闲空间中,确定大小与所述内存需求量匹配的目标内存空间;将所述目标内存空间对应的内存地址发送至所述线程。本申请实施例提供一种内存分配装置,包括:第一确定模块,用于当接收线程发送的内存分配请求时,确定所述内存分配请求对应的内存需求量;判断模块,用于判断所述内存需求量是否小于预设阈值;第二确定模块,用于若所述内存需求量小于预设阈值,则从第一内存空间中靠近第一内存地址的空闲空间中,确定大小与所述内存需求量匹配的目标内存空间;第二确定模块,还用于若所述内存需求量不小于预设阈值,则从第一内存空间中靠近第二内存地址的空闲空间中,确定大小与所述内存需求量匹配的目标内存空间;发送模块,用于将所述目标内存空间对应的内存地址发送至所述线程。本申请实施例提供一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机上执行时,使得所述计算机执行本申请实施例提供的内存分配方法中的流程。本申请实施例还提供一种电子设备,包括存储器,处理器,所述处理器通过调用所述存储器中存储的计算机程序,用于执行本申请实施例提供的内存分配方法中的流程。本申请实施例中,当内存需求量小于预设阈值时,从第一内存空间中靠近第一内存地址的空闲空间中,确定大小与内存需求量匹配的目标内存空间;当内存需求量不小于预设阈值时,从第一内存空间中靠近第二内存地址的空闲空间中,确定大小与内存需求量匹配的目标内存空间,即将第一内存空间按照内存需求量的大小进行不同方向分配,将内存需求量较小的内存集中在同一区域,将内存需求量较大的内存集中在另一区域,减少了内存碎片化的程度,提高了内存空间的利用率。附图说明下面结合附图,通过对本申请的具体实施方式详细描述,将使本申请的技术方案及其有益效果显而易见。图1是本申请实施例提供的内存分配方法的第一种流程示意图。图2是本申请实施例提供的内存分配方法的第一种场景示意图。图3是本申请实施例提供的内存分配方法的第二种流程示意图。图4是本申请实施例提供的内存分配方法的第二种场景示意图。图5是本申请实施例提供的内存分配方法的第三种场景示意图。图6是本申请实施例提供的内存分配方法的第四种场景示意图。图7是本申请实施例提供的内存分配装置的结构示意图。图8是本申请实施例提供的电子设备的第一种结构示意图。图9是本申请实施例提供的电子设备的第二种结构示意图。具体实施方式请参照图示,其中相同的组件符号代表相同的组件,本申请的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本申请具体实施例,其不应被视为限制本申请未在此详述的其它具体实施例。可以理解的是,本申请实施例的执行主体可以是诸如智能手机或平板电脑等电子设备。请参阅图1,图1是本申请实施例提供的内存分配方法的第一种流程示意图,流程可以包括:在101中,当接收到线程发送的内存分配请求时,确定该内存分配请求对应的内存需求量。可以理解的是,一个应用程序(application)对应一个进程。进程包括一个或多个线程的。线程向电子设备的内核申请内存以执行任务,即向电子设备的内核发送内存分配请求。如图2所示,当电子设备运行的应用程序为32位的应用程序时,电子设备的内核通常给该应用程序分配一大小为4GB的虚拟内存地址空间,包括brk区域和mmap区域。该虚拟内存地址空间的地址范围为:0x00000000至0xFFFFFFFF。其中,0至1GB区域为brk区域,该brk区域的地址范围为0x00000000至0x3FFFFFFF。1GB至4GB区域为mmap区域,该mmap区域的地址范围为0x3FFFFFFF至0xFFFFFFFF。在brk区域中,0至32KB区域被预留,剩余的32KB至1GB区域用于内存分配。其中,0至32KB区域的地址范围为:0x00000000至0x00007FFF。32KB至1GB区域的地址范围为:0x00007FFF至0x3FFFFFFF。在mmap区域中,4088MB至4GB区域被预留,该4088MB至4GB区域又被称为栈,剩余的1GB至4088MB区域用于内存分配。其中,4088MB至4GB区域的地址范围为:0xFF7FFFFF至0xFFFFFFFF。地址0xFFFFFFFF所在的位置为栈顶。1GB至4088MB区域的地址范围为:0x3FFFFFFF至0xFF7FFFFF。需要说明的是,以上仅是对32位的应用程序对应的虚拟内存地址空间进行示例性的说明,并不用于限制本申请。比如,当某线程开始运行时,该线程可向电子设备的内核发送内存分配请求,以向该内核请求占用一定大小的内存空间。其中,该内存分配请求携带有内存需求量,该内存需求量表示该线程需申请的内存的大小。该内存需求量的单位为字节(Byte,B)。例如,该内存需求量可以为1KB、100KB、1MB、4MB或1GB等等。其中,1GB=1024MB,1MB=1024KB,1KB=1024B。在本申请实施例中,当某线程向电子设备的内核发送内存分配请求时,该内核即接收到该线程发送的内存分配请求。当接收到该线程发送的内存分配请求时,该内核可确定内存分配请求对应的内存需求量。在102中,判断内存需求量是否小于预设阈值。若内存需求量小于预设阈值,则进入流程103。若内存需求量不小于预设阈值,则进入流程104。在103中,从第一内存空间中靠近第一内存地址的空闲空间中,确定大小与内存需求量匹配的目标内存空间。在104中,从第一内存空间中靠近第二内存地址的空闲空间中,确定大小与内存需求量匹配的目标内存空间。比如,当确定出内存分配请求对应的内存需求量之后,该电子设备可判断该内存需求量是否小于预设阈值。若内存需求量小于预设阈值,则电子设备可通过内核从第一本文档来自技高网...

【技术保护点】
1.一种内存分配方法,其特征在于,包括:/n当接收到线程发送的内存分配请求时,确定所述内存分配请求对应的内存需求量;/n判断所述内存需求量是否小于预设阈值;/n若所述内存需求量小于预设阈值,则从第一内存空间中靠近第一内存地址的空闲空间中,确定大小与所述内存需求量匹配的目标内存空间;/n若所述内存需求量不小于预设阈值,则从第一内存空间中靠近第二内存地址的空闲空间中,确定大小与所述内存需求量匹配的目标内存空间;/n将所述目标内存空间对应的内存地址发送至所述线程。/n

【技术特征摘要】
1.一种内存分配方法,其特征在于,包括:
当接收到线程发送的内存分配请求时,确定所述内存分配请求对应的内存需求量;
判断所述内存需求量是否小于预设阈值;
若所述内存需求量小于预设阈值,则从第一内存空间中靠近第一内存地址的空闲空间中,确定大小与所述内存需求量匹配的目标内存空间;
若所述内存需求量不小于预设阈值,则从第一内存空间中靠近第二内存地址的空闲空间中,确定大小与所述内存需求量匹配的目标内存空间;
将所述目标内存空间对应的内存地址发送至所述线程。


2.根据权利要求1所述的内存分配方法,其特征在于,所述判断所述内存需求量是否小于预设阈值之前,还包括:
确定所述内存分配请求对应的内存类型;
当所述内存类型为第一类型时,执行判断所述内存需求量是否小于预设阈值;
当所述内存类型为第二类型时,从第二内存空间中靠近第三内存地址的空闲空间中,确定大小与所述内存需求量匹配的第三内存空间;
将所述第三内存空间对应的内存地址发送至所述线程。


3.根据权利要求2所述的内存分配方法,其特征在于,所述判断所述内存需求量是否小于预设阈值之前,还包括:
当所述内存类型为第一类型时,判断所述第一内存空间对应的空闲空间的大小是否不小于所述内存需求量;
若所述第一内存空间对应的空闲空间的大小不小于所述内存需求量,则执行判断所述内存需求量是否小于预设阈值。


4.根据权利要求3所述的内存分配方法,其特征在于,所述判断所述第一内存空间对应的空闲空间的大小是否不小于所述内存需求量之后,还包括:
若所述第一内存空间对应的空闲空间的大小小于所述内存需求量,则从第二内存空间中靠近第四内存地址的空闲空间中,确定大小与所述内存需求量匹配的第四内存空间;
将所述第四内存空间对应的内存地址发送至所述线程。


5.根据权利要求1所述的内存分配方法,其特征在于,所述确定大小与所述内存需求量匹配的目标内存空间之后,...

【专利技术属性】
技术研发人员:张诗明
申请(专利权)人:OPPO重庆智能科技有限公司
类型:发明
国别省市:重庆;50

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

1