CN113495789B - 内存分配方法及装置 - Google Patents
内存分配方法及装置 Download PDFInfo
- Publication number
- CN113495789B CN113495789B CN202010271278.8A CN202010271278A CN113495789B CN 113495789 B CN113495789 B CN 113495789B CN 202010271278 A CN202010271278 A CN 202010271278A CN 113495789 B CN113495789 B CN 113495789B
- Authority
- CN
- China
- Prior art keywords
- memory
- target
- time
- application
- target task
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 618
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 abstract description 20
- 230000008569 process Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 241000282376 Panthera tigris Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
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
- 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/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种内存分配方法及装置。所述方法包括:当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间;在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务对应的目标内存块;将所述目标内存块预先分配给所述目标任务。本申请通过预先为频繁执行的任务分配内存块,可以大大提高系统任务和局间消息处理应用程序的时延,进而提升内存池的利用率和效率,提升LTE系统的性能、稳定性和可靠性,并增强LTE相关产品的竞争力。
Description
技术领域
本申请涉及通信技术领域,特别是涉及一种内存分配方法及装置。
背景技术
随着LTE(Long Term Evolution,长期演进)系统的长期演进,日益增长的用户数量、更加复杂的业务模型以及多样化、高标准的客户需求催生着不断迭代更新的软件版本和新型产品,都使得目前主流通信网络设备的底层操作系统向多任务、高频次、大容量、多线程方向发展。此类主流通信网络设备包含但不限于BBU(Building Base band Unit,基带处理单元)、RRU(Radio Remote Unit,射频拉远单元)、OMC(Operation and MaintenanceCenter,操作维护中心)、MME(Mobility Management Entity,接入网络的控制点)等。但设备运行过程中也逐渐的暴露出一些任务阻塞、任务得不到访问、丢消息、内存池耗尽等问题,归根结底是底层操作系统处理的消息、进程和任务在访问内存时得不到高效的处理甚至分配内存失败的结果。
具体地,可以结合LTE系统无线通信标准进行阐述,如图1所示,现有的主控板可以通过系统配置使得指定的CPU(Central Processing Unit,中央处理器)核或者硬件线程运行特定的线程或者任务。应用程序大多是基于OSPAPI(Operating SystemPlaneApplication Programming Interface,系统中间件平台的应用程序接口)进行编程,主要完成消息通信及操作系统任务的功能调用等。基于进程的编程模型中,每个进程都能实例化一个OSP,每个OSP资源可以独立使用也可以相互共享。主控板的应用层、无线资源控制层、数据链路层、物理层、操作维护子系统等的消息和任务都通过调用OSP的各个进程进行局间消息的交互处理、任务的调用、执行和反馈等,由此OSP平台的内存管理就显得越发重要。
根据内存的访问权限和各任务调用OSP的关联性,分为栈内存、进程内存和共享内存。所谓进程内存是除了进程占内存外分配的进程内全局内存,包括全局变量的定义或调用操作系统接口分配的内存,栈内存是对进程内存的二次分配给线程专用的内存,栈内存和进程内存均为进程私有内存,而共享内存是为多进程或多核实现的共享内存。
现有实现对于内存池的分配流程,当有应用程序或者对系统进行的操作要调用任务A时,任务A向OSP发起申请内存的请求,请求中会携带申请内存的大小,OSP根据任务A的访问权限和调用内存的关联性为其分配满足需求大小的内存块,并回复分配内存的响应,响应消息中携带具体的内存ID,然后任务A开始进行消息或者函数的处理,处理完成后任务A向OSP发起释放内存的请求,OSP释放掉该内存并回复响应。
随着无线通信技术的不断演进,越来越多高频次、大容量的任务和消息调用和运行是都需要申请内存,尤其多核和多进程的场景下对于共享内存的使用率更高,现有的内存分配方案中任务每次使用内存前都要发起申请请求,然后OSP依据内存池的大小及占用情况为其分配合适的内存块,这无形中就增加了任务和消息申请内存的时延,增加了任务和消息占用内存的时间,内存长时间得不到释放,空闲内存越来越少,也就会引起其他任务申请内存失败或者内存池耗尽的风险,也严重影响了产品的稳定性和可靠性。
发明内容
本申请实施例所要解决的技术问题是提供一种内存分配方法及装置,以解决现有技术中的内存分配方式,会增加任务和消息申请内存的时延,增加了任务和消息占用内存的时间,内存长时间得不到释放,空闲内存越来越少,也就会引起其他任务申请内存失败或者内存池耗尽的风险,也严重影响了产品的稳定性和可靠性的技术问题。
为了解决上述技术问题,本申请实施例提供了一种内存分配方法,包括:
当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间;
在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务对应的目标内存块;
将所述目标内存块预先分配给所述目标任务。
可选地,所述根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务预先对应的目标内存块,包括:
获取所述目标任务在所述内存申请次数中携带的申请内存中内存最大的目标申请内存;
获取与所述目标申请内存的内存大小匹配的目标内存块,及所述目标内存块对应的内存块标识;
所述将所述目标内存块预先分配给所述目标任务,包括:
将所述目标内存块的内存大小和所述内存块标识预先分配给所述目标任务。
可选地,在所述将所述目标内存块预先分配给所述目标任务之后,还包括:
在所述目标任务被调用时,获取所述目标任务在本次调用时所需的实际内存;
比较所述实际内存与所述目标内存块的目标内存之间的大小关系;
在所述实际内存大于所述目标内存的情况下,接收所述目标任务重新发送的内存申请消息。
可选地,在所述将所述目标内存块预先分配给所述目标任务之后,还包括:
根据所述目标任务在所述内存申请次数内进行内存申请的内存申请时间,确定进行内存申请的最小时间间隔;
根据所述最小时间间隔和所述目标内存块的预分配时间,对所述目标任务进行下次内存预分配。
可选地,在所述获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间之后,还包括:
在所述释放时间与当前时间的时长大于所述指定时长的情况下,取消所述目标任务对应的内存预分配。
为了解决上述技术问题,本申请实施例提供了一种内存分配装置,包括:
释放时间获取模块,用于当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间;
目标内存块确定模块,用于在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务对应的目标内存块;
目标内存块分配模块,用于将所述目标内存块预先分配给所述目标任务。
可选地,所述目标内存块确定模块包括:
目标申请内存获取单元,用于获取所述目标任务在所述内存申请次数中携带的申请内存中内存最大的目标申请内存;
目标内存标识获取单元,用于获取与所述目标申请内存的内存大小匹配的目标内存块,及所述目标内存块对应的内存块标识;
所述目标内存块分配模块包括:
目标内存块分配单元,用于将所述目标内存块的内存大小和所述内存块标识预先分配给所述目标任务。
可选地,还包括:
实际内存获取模块,用于在所述目标任务被调用时,获取所述目标任务在本次调用时所需的实际内存;
大小关系比较模块,用于比较所述实际内存与所述目标内存块的目标内存之间的大小关系;
内存申请接收模块,用于在所述实际内存大于所述目标内存的情况下,接收所述目标任务重新发送的内存申请消息。
可选地,还包括:
最小时间间隔确定模块,用于根据所述目标任务在所述内存申请次数内进行内存申请的内存申请时间,确定进行内存申请的最小时间间隔;
下次预分配模块,用于根据所述最小时间间隔和所述目标内存块的预分配时间,对所述目标任务进行下次内存预分配。
可选地,还包括:
预分配取消模块,用于在所述释放时间与当前时间的时长大于所述指定时长的情况下,取消所述目标任务对应的内存预分配。
为了解决上述技术问题,本申请实施例提供了一种电子设备,包括:
处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述的内存分配方法。
为了解决上述技术问题,本申请实施例提供了一种计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述任一项所述的内存分配方法。
与现有技术相比,本申请实施例包括以下优点:
本申请实施例中,通过当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取目标任务距离当前时间最近的一次被调用后释放内存的释放时间,在释放时间与当前时间的时长小于或者等于预设时长的情况下,根据目标任务在内存申请次数中携带的申请内存,确定目标任务对应的目标内存块,将目标内存块预先分配给目标任务。本申请实施例通过预先为频繁执行的任务分配内存块,可以大大提高系统任务和局间消息处理应用程序的时延,进而提升内存池的利用率和效率,提升LTE系统的性能、稳定性和可靠性,并增强LTE相关产品的竞争力。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
图1为现有技术中的一种OSP在软件中的位置的示意图;
图2为本申请实施例提供的一种内存分配方法的步骤流程图;
图3为本申请实施例提供的另一种内存分配方法的步骤流程图;
图4为本申请实施例提供的一种内存分配装置的结构示意图
图5为本申请实施例提供的另一种内存分配装置的结构示意图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
实施例一
参照图2,示出了本申请实施例提供的一种内存分配方法的步骤流程图,如图2所示,该内存分配方法具体可以包括如下步骤:
步骤101:当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间。
本申请实施例可以应用于预先为目标任务分配指定内存块的场景中。
指定时长是指由业务人员预先设置的距离当前时间的时长为设定时长的时长阈值,指定时长可以为500ms、600ms等等,具体地,可以根据业务需求而定,本实施例对此不加以限制。
设定次数阈值是指由业务人员预先设置的任务在距离当前时间为指定时长内申请内存的次数的阈值,即目标任务被调用的次数,设定次数阈值可以为10次、8次等等,具体地,可以根据业务需求而定,本实施例对此也不加以限制。
设定次数阈值可以用于判定任务在距离当前时间的时长为指定时长内的调用是否频繁,例如,设定次数阈值为10次,指定时长为500ms,某个任务在距离当前时间为500ms的时长内申请内存的次数大于或者等于10次时,则可以认定该任务被频繁调用;而在该任务在距离当前时间为500ms的时长内申请内存的次数小于10次时,则判定该任务未被频繁调用。
目标任务是指在距离当前时间的时长为指定时长内申请内存的次数达到设定次数阈值的任务,即该目标任务为被频繁调用的任务。
内存申请次数是指目标任务在距离当前时间的时长为指定时长内申请内存的次数,即当任务A在T1时间内连续第N次进行内存的申请,每次内存的申请则记录为一次内存申请次数。
释放时间是指目标任务在距离当前时间最近的一次被调用后释放内存的时间,可以理解地,当由于应用程序或者大量相同任务的局间消息需要频繁调用任务A时,当任务A在T1时间内连续第N次进行内存的申请和使用完成后向OSP发起内存释放的请求,即在任务A被执行完成之后,会发出内存释放请求,以释放内存,而任务A距离当前时间最近的一次被调用后释放内存的时间,即为本步骤中所描述的释放时间。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本申请实施例的唯一限制。
当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,可以获取目标任务距离当前时间最近的一次被调用后释放内存的释放时间,进而,执行步骤102。
步骤102:在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务对应的目标内存块。
预设时长是指由业务人员预先设置的用于判定目标任务上次释放内存的时长时间与当前时间的时长差值,是否满足预分配条件的时长,预设时长可以设置为500ms、800ms等,具体地,可以根据业务需求而定,本实施例对此不加以限制。
在目标任务每次申请内存时,会携带指定的申请内存以供目标任务执行使用。
目标内存块是指为目标任务预先分配的内存块。
在目标任务距离当前时间最近的一次被调用后释放内存的释放时间小于或者等于预设时长的情况下,可以根据目标任务在内存申请次数中携带的申请内存,确定目标任务对应的目标内存块,例如,OSP为任务A预分配预算大小的内存块并将内存块大小和内存块ID(Identification,身份标识号码)通过消息发送给任务A,其中内存块的预算大小是优先获取前N次的内存申请消息携带的内存大小,{d1、d2、d3……dn},再从前N次申请的内存块中取最大值作为本次预分配内存块的大小d∈max{d1、d2、d3……dn},然后根据本次预分配内存块的大小从系统中选取指定的内存块以作为目标内存块。
可以理解的,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本申请实施例的唯一限制。
在释放时间与当前时间的时长小于或者等于预设时长的情况下,可以根据目标任务在内存申请次数中携带的申请内存,确定目标任务对应的目标内存块,进而,执行步骤103。
步骤103:将所述目标内存块预先分配给所述目标任务。
在获取到为目标任务预先分配目标内存块之后,可以将目标内存块分配给目标任务,具体地,可以将预分配的目标内存块的内存块标识和目标内存块的内存大小发送给目标任务,以实现预分配过程。
本实施例通过预先为频繁执行的任务分配内存块,可以大大提高系统任务和局间消息处理应用程序的时延。
本申请实施例提供的内存分配方法,通过当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取目标任务距离当前时间最近的一次被调用后释放内存的释放时间,在释放时间与当前时间的时长小于或者等于预设时长的情况下,根据目标任务在内存申请次数中携带的申请内存,确定目标任务对应的目标内存块,将目标内存块预先分配给目标任务。本申请实施例通过预先为频繁执行的任务分配内存块,可以大大提高系统任务和局间消息处理应用程序的时延,进而提升内存池的利用率和效率,提升LTE系统的性能、稳定性和可靠性,并增强LTE相关产品的竞争力。
实施例二
参照图3,示出了本申请实施例提供的另一种内存分配方法的步骤流程图,如图3所示,该内存分配方法具体可以包括如下步骤:
步骤201:当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间。
本申请实施例可以应用于预先为目标任务分配指定内存块的场景中。
指定时长是指由业务人员预先设置的距离当前时间的时长为设定时长的时长阈值,指定时长可以为500ms、600ms等等,具体地,可以根据业务需求而定,本实施例对此不加以限制。
设定次数阈值是指由业务人员预先设置的任务在距离当前时间为指定时长内申请内存的次数的阈值,即目标任务被调用的次数,设定次数阈值可以为10次、8次等等,具体地,可以根据业务需求而定,本实施例对此也不加以限制。
设定次数阈值可以用于判定任务在距离当前时间的时长为指定时长内的调用是否频繁,例如,设定次数阈值为10次,指定时长为500ms,某个任务在距离当前时间为500ms的时长内申请内存的次数大于或者等于10次时,则可以认定该任务被频繁调用;而在该任务在距离当前时间为500ms的时长内申请内存的次数小于10次时,则判定该任务未被频繁调用。
目标任务是指在距离当前时间的时长为指定时长内申请内存的次数达到设定次数阈值的任务,即该目标任务为被频繁调用的任务。
内存申请次数是指目标任务在距离当前时间的时长为指定时长内申请内存的次数,即当任务A在T1时间内连续第N次进行内存的申请,每次内存的申请则记录为一次内存申请次数。
释放时间是指目标任务在距离当前时间最近的一次被调用后释放内存的时间,可以理解地,当由于应用程序或者大量相同任务的局间消息需要频繁调用任务A时,当任务A在T1时间内连续第N次进行内存的申请和使用完成后向OSP发起内存释放的请求,即在任务A被执行完成之后,会发出内存释放请求,以释放内存,而任务A距离当前时间最近的一次被调用后释放内存的时间,即为本步骤中所描述的释放时间。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本申请实施例的唯一限制。
当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,可以获取目标任务距离当前时间最近的一次被调用后释放内存的释放时间,进而,执行步骤202。
步骤202:在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,获取所述目标任务在所述内存申请次数中携带的申请内存中内存最大的目标申请内存。
预设时长是指由业务人员预先设置的用于判定目标任务上次释放内存的时长时间与当前时间的时长差值,是否满足预分配条件的时长,预设时长可以设置为800ms、700ms等,具体地,可以根据业务需求而定,本实施例对此不加以限制。
目标申请内存是指目标任务在内存申请次数中,每次申请内存时所携带的申请内存中最大的申请内存,可以理解地,在目标任务每次申请内存时,会携带指定的申请内存以供目标任务执行使用,那么,本实施例中,所虎丘的是在距离当前时间的时长为指定时长内的内存申请次数中,每次申请时所携带的申请内存中最大的申请内存,即目标申请内存。例如,OSP为任务A预分配预算大小的内存块并将内存块大小和内存块ID通过消息发送给任务A,其中内存块的预算大小是优先获取前N次的内存申请消息携带的内存大小,{d1、d2、d3……dn},再从前N次申请的内存块中取最大值作为本次预分配内存块的大小d∈max{d1、d2、d3……dn}。
在获取目标申请内存之后,执行步骤203。
步骤203:获取与所述目标申请内存的内存大小匹配的目标内存块,及所述目标内存块对应的内存块标识。
目标内存块是指为目标任务预先分配的内存块。
在获取目标申请内存之后,可以根据目标申请内存的内存大小,获取匹配的内存块以作为目标内存块,具体地,在存在与目标申请内存大小相同的内存块时,可以选取一个内存大小与目标申请内存大小相同的内存块作为目标内存块。而在不存在与目标申请内存大小相同的内存块时,可以先获取比目标申请内存大的内存块,然后从这些内存块中选取内存最小的内存块作为目标内存块,例如,目标申请内存为10,比目标申请内存10大的内存块包括内存块1、内存块2和内存块3,内存块1的大小为11,内存块2的大小为12,内存块3的大小为13,此时,可以选取内存块1作为目标内存块。
可以理解地,上述示例仅是为了更好地理解本申请实施例的技术方案而列举的示例,不作为对本实施例的唯一限制。
在获取与目标申请内存的内存大小匹配的目标内存块,及目标内存块的内存块标识之后,执行步骤204。
步骤204:将所述目标内存块的内存大小和所述内存块标识预先分配给所述目标任务。
在获取与目标申请内存的内存大小匹配的目标内存块,及目标内存块的内存块标识之后,可以将目标内存块的内存大小和内存块标识预先分配给目标任务,从而实现任务执行所需内存的预分配过程。
本实施例通过预先为频繁执行的任务分配内存块,可以大大提高系统任务和局间消息处理应用程序的时延。
步骤205:在所述目标任务被调用时,获取所述目标任务在本次调用时所需的实际内存。
实际内存是指目标任务在执行时所需的内存。
在目标任务被调用时,可以获取目标任务在本次调用时所需要的实际内存大小,进而,执行步骤206。
步骤206:比较所述实际内存与所述目标内存块的目标内存之间的大小关系。
目标内存是指目标内存块对应的内存大小。
在获取目标任务在本次调用时所需要的实际内存之后,可以比较实际内存与目标内存之间的大小关系,进而,执行步骤207。
步骤207:在所述实际内存大于所述目标内存的情况下,接收所述目标任务重新发送的内存申请消息。
在实际内存小于或者等于目标内存的情况下,可以直接进行应用程序的处理,而在实际内存大于目标内存的情况下,可以向目标任务发送内存申请的消息,从而使目标任务重新发送内存申请消息,例如,当任务A实际需要的内存块大小c小于或者等于OSP为其预分配的内存块大小d时直接进行应用程序的处理,当c大于d时则重新发起内存申请。
步骤208:根据所述目标任务在所述内存申请次数内进行内存申请的内存申请时间,确定进行内存申请的最小时间间隔。
内存申请时间是指目标任务在内存申请次数内申请内存时所对应的时间,例如,内存申请次数按照时间先后依次为第一次、第二次和第三次,则分别记录目标任务第一次申请内存的第一时间,第二次申请内存的第二时间,和第三次申请内存的第三时间,然后,计算第一时间和第二时间之间的时间间隔,及第二时间与第三时间之间的时间间隔,并从两个时间间隔中选取最小时间间隔。
在本实施例中,可以预先记录目标任务在内存申请次数内进行内存申请的内存申请时间,然后计算出相邻时间的两次内存申请时间间隔,最后从中选取出最小时间间隔。
在根据目标任务在内存申请次数内进行内存申请的内存申请时间,确定出进行内存申请的最小时间间隔之后,执行步骤209。
步骤209:根据所述最小时间间隔和所述目标内存块的预分配时间,对所述目标任务进行下次内存预分配。
下次内存预分配是指在将目标内存块预分配给目标任务之后,为目标任务执行的再次的内存预分配。
预分配时间是指将目标内存块预分配给目标任务时的时间。
在根据目标任务在内存申请次数内进行内存申请的内存申请时间,确定出进行内存申请的最小时间间隔之后,可以根据最小时间间隔和预分配时间,对目标任务进行下次内存预分配,即OSP为目标任务进行预分配的频次间隔为前内存申请次数内存申请的最小时间间隔。
步骤210:在所述释放时间与当前时间的时长大于所述指定时长的情况下,取消所述目标任务对应的内存预分配。
在获取目标任务距离当前时间最近的一次被调用后释放内存的释放时间,还可以比较时长时间与当前时间之间的时长与指定时长之间的大小关系,在释放时间与当前时间的时长大于指定时长时,则取消为目标任务的内存预分配过程。
本实施例通过预先为频繁执行的任务分配内存块,可以大大提高系统任务和局间消息处理应用程序的时延。
本申请实施例提供的内存分配方法,通过当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取目标任务距离当前时间最近的一次被调用后释放内存的释放时间,在释放时间与当前时间的时长小于或者等于预设时长的情况下,根据目标任务在内存申请次数中携带的申请内存,确定目标任务对应的目标内存块,将目标内存块预先分配给目标任务。本申请实施例通过预先为频繁执行的任务分配内存块,可以大大提高系统任务和局间消息处理应用程序的时延,进而提升内存池的利用率和效率,提升LTE系统的性能、稳定性和可靠性,并增强LTE相关产品的竞争力。
实施例三
参照图4,示出了本申请实施例提供的一种内存分配装置的结构示意图,如图4所示,该内存分配装置具体可以包括如下模块:
释放时间获取模块310,用于当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间;
目标内存块确定模块320,用于在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务对应的目标内存块;
目标内存块分配模块330,用于将所述目标内存块预先分配给所述目标任务。
本申请实施例提供的内存分配装置,通过当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取目标任务距离当前时间最近的一次被调用后释放内存的释放时间,在释放时间与当前时间的时长小于或者等于预设时长的情况下,根据目标任务在内存申请次数中携带的申请内存,确定目标任务对应的目标内存块,将目标内存块预先分配给目标任务。本申请实施例通过预先为频繁执行的任务分配内存块,可以大大提高系统任务和局间消息处理应用程序的时延,进而提升内存池的利用率和效率,提升LTE系统的性能、稳定性和可靠性,并增强LTE相关产品的竞争力。
实施例四
参照图5,示出了本申请实施例提供的另一种内存分配装置的结构示意图,如图5所示,该内存分配装置具体可以包括如下模块:
释放时间获取模块410,用于当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间;
目标内存块确定模块420,用于在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务对应的目标内存块;
目标内存块分配模块430,用于将所述目标内存块预先分配给所述目标任务;
实际内存获取模块440,用于在所述目标任务被调用时,获取所述目标任务在本次调用时所需的实际内存;
大小关系比较模块450,用于比较所述实际内存与所述目标内存块的目标内存之间的大小关系;
内存申请接收模块460,用于在所述实际内存大于所述目标内存的情况下,接收所述目标任务重新发送的内存申请消息;
最小时间间隔确定模块470,用于根据所述目标任务在所述内存申请次数内进行内存申请的内存申请时间,确定进行内存申请的最小时间间隔;
下次预分配模块480,用于根据所述最小时间间隔和所述目标内存块的预分配时间,对所述目标任务进行下次内存预分配;
预分配取消模块490,用于在所述释放时间与当前时间的时长大于所述指定时长的情况下,取消所述目标任务对应的内存预分配。
可选地,所述目标内存块确定模块420包括:
目标申请内存获取单元421,用于获取所述目标任务在所述内存申请次数中携带的申请内存中内存最大的目标申请内存;
目标内存标识获取单元422,用于获取与所述目标申请内存的内存大小匹配的目标内存块,及所述目标内存块对应的内存块标识;
所述目标内存块分配模块430包括:
目标内存块分配单元431,用于将所述目标内存块的内存大小和所述内存块标识预先分配给所述目标任务。
本申请实施例提供的内存分配装置,通过当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取目标任务距离当前时间最近的一次被调用后释放内存的释放时间,在释放时间与当前时间的时长小于或者等于预设时长的情况下,根据目标任务在内存申请次数中携带的申请内存,确定目标任务对应的目标内存块,将目标内存块预先分配给目标任务。本申请实施例通过预先为频繁执行的任务分配内存块,可以大大提高系统任务和局间消息处理应用程序的时延,进而提升内存池的利用率和效率,提升LTE系统的性能、稳定性和可靠性,并增强LTE相关产品的竞争力。
参照图6,示出了本申请实施例提供的一种电子设备的结构示意图。如图6所示,电子设备600可以被提供为一服务器。参照图6,电子设备600包括处理组件622,其进一步包括一个或多个处理器,以及由存储器732所代表的存储器资源,用于存储可由处理组件622的执行的指令,例如应用程序。存储器632中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件622被配置为执行指令,以执行下述方法:
当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间;
在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务对应的目标内存块;
将所述目标内存块预先分配给所述目标任务。
可选地,所述根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务预先对应的目标内存块,包括:
获取所述目标任务在所述内存申请次数中携带的申请内存中内存最大的目标申请内存;
获取与所述目标申请内存的内存大小匹配的目标内存块,及所述目标内存块对应的内存块标识;
所述将所述目标内存块预先分配给所述目标任务,包括:
将所述目标内存块的内存大小和所述内存块标识预先分配给所述目标任务。
可选地,在所述将所述目标内存块预先分配给所述目标任务之后,还包括:
在所述目标任务被调用时,获取所述目标任务在本次调用时所需的实际内存;
比较所述实际内存与所述目标内存块的目标内存之间的大小关系;
在所述实际内存大于所述目标内存的情况下,接收所述目标任务重新发送的内存申请消息。
可选地,在所述将所述目标内存块预先分配给所述目标任务之后,还包括:
根据所述目标任务在所述内存申请次数内进行内存申请的内存申请时间,确定进行内存申请的最小时间间隔;
根据所述最小时间间隔和所述目标内存块的预分配时间,对所述目标任务进行下次内存预分配。
可选地,在所述获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间之后,还包括:
在所述释放时间与当前时间的时长大于所述指定时长的情况下,取消所述目标任务对应的内存预分配。
电子设备600还可以包括一个电源组件626被配置为执行电子设备600的电源管理,一个有线或无线网络接口650被配置为将电子设备600连接到网络,和一个输入输出(I/O)接口658。电子设备600可以操作基于存储在存储器632的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
另外地,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述内存分配方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端上,使得在计算机或其他可编程终端上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端中还存在另外的相同要素。
以上对本申请所提供的一种内存分配方法和一种内存分配装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种内存分配方法,其特征在于,包括:
当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间;
在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务对应的目标内存块;
将所述目标内存块预先分配给所述目标任务;
在所述将所述目标内存块预先分配给所述目标任务之后,还包括:
根据所述目标任务在所述内存申请次数内进行内存申请的内存申请时间,确定进行内存申请的最小时间间隔;
根据所述最小时间间隔和所述目标内存块的预分配时间,对所述目标任务进行下次内存预分配。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务预先对应的目标内存块,包括:
获取所述目标任务在所述内存申请次数中携带的申请内存中内存最大的目标申请内存;
获取与所述目标申请内存的内存大小匹配的目标内存块,及所述目标内存块对应的内存块标识;
所述将所述目标内存块预先分配给所述目标任务,包括:
将所述目标内存块的内存大小和所述内存块标识预先分配给所述目标任务。
3.根据权利要求1所述的方法,其特征在于,在所述将所述目标内存块预先分配给所述目标任务之后,还包括:
在所述目标任务被调用时,获取所述目标任务在本次调用时所需的实际内存;
比较所述实际内存与所述目标内存块的目标内存之间的大小关系;
在所述实际内存大于所述目标内存的情况下,接收所述目标任务重新发送的内存申请消息。
4.根据权利要求1所述的方法,其特征在于,在所述获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间之后,还包括:
在所述释放时间与当前时间的时长大于所述指定时长的情况下,取消所述目标任务对应的内存预分配。
5.一种内存分配装置,其特征在于,包括:
释放时间获取模块,用于当目标任务在距离当前时间的时长为指定时长内申请内存的内存申请次数达到设定次数阈值时,获取所述目标任务距离当前时间最近的一次被调用后释放内存的释放时间;
目标内存块确定模块,用于在所述释放时间与当前时间的时长小于或者等于预设时长的情况下,根据所述目标任务在所述内存申请次数中携带的申请内存,确定所述目标任务对应的目标内存块;
目标内存块分配模块,用于将所述目标内存块预先分配给所述目标任务;
还包括:
最小时间间隔确定模块,用于根据所述目标任务在所述内存申请次数内进行内存申请的内存申请时间,确定进行内存申请的最小时间间隔;
下次预分配模块,用于根据所述最小时间间隔和所述目标内存块的预分配时间,对所述目标任务进行下次内存预分配。
6.根据权利要求5所述的装置,其特征在于,所述目标内存块确定模块包括:
目标申请内存获取单元,用于获取所述目标任务在所述内存申请次数中携带的申请内存中内存最大的目标申请内存;
目标内存标识获取单元,用于获取与所述目标申请内存的内存大小匹配的目标内存块,及所述目标内存块对应的内存块标识;
所述目标内存块分配模块包括:
目标内存块分配单元,用于将所述目标内存块的内存大小和所述内存块标识预先分配给所述目标任务。
7.根据权利要求5所述的装置,其特征在于,还包括:
实际内存获取模块,用于在所述目标任务被调用时,获取所述目标任务在本次调用时所需的实际内存;
大小关系比较模块,用于比较所述实际内存与所述目标内存块的目标内存之间的大小关系;
内存申请接收模块,用于在所述实际内存大于所述目标内存的情况下,接收所述目标任务重新发送的内存申请消息。
8.根据权利要求5所述的装置,其特征在于,还包括:
预分配取消模块,用于在所述释放时间与当前时间的时长大于所述指定时长的情况下,取消所述目标任务对应的内存预分配。
9.一种电子设备,其特征在于,包括:
处理器、存储器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1至4中任一项所述的内存分配方法。
10.一种计算机可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行权利要求1至4中任一项所述的内存分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010271278.8A CN113495789B (zh) | 2020-04-08 | 2020-04-08 | 内存分配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010271278.8A CN113495789B (zh) | 2020-04-08 | 2020-04-08 | 内存分配方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113495789A CN113495789A (zh) | 2021-10-12 |
CN113495789B true CN113495789B (zh) | 2024-02-13 |
Family
ID=77994960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010271278.8A Active CN113495789B (zh) | 2020-04-08 | 2020-04-08 | 内存分配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113495789B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117093508B (zh) * | 2023-10-17 | 2024-01-23 | 苏州元脑智能科技有限公司 | 一种内存资源管理方法、装置、电子设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750550A (zh) * | 2015-04-20 | 2015-07-01 | 上海斐讯数据通信技术有限公司 | 移动终端应用管理系统、方法及使用次数记录生成方法 |
CN106293924A (zh) * | 2015-05-20 | 2017-01-04 | Tcl集团股份有限公司 | 安卓系统的内存管理方法及装置 |
CN106776036A (zh) * | 2016-12-30 | 2017-05-31 | 广东欧珀移动通信有限公司 | 一种资源分配方法及装置 |
CN107885591A (zh) * | 2016-09-27 | 2018-04-06 | 华为技术有限公司 | 为应用分配系统资源的方法和终端 |
CN110008021A (zh) * | 2019-03-05 | 2019-07-12 | 平安科技(深圳)有限公司 | 内存管理方法、装置、电子设备及计算机可读存储介质 |
CN110750357A (zh) * | 2019-09-23 | 2020-02-04 | 深圳传音控股股份有限公司 | 智能分配方法及终端 |
CN110825509A (zh) * | 2019-11-01 | 2020-02-21 | 深圳传音控股股份有限公司 | 应用管理方法、装置、设备及可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9740481B2 (en) * | 2013-12-03 | 2017-08-22 | Samsung Electronics Co., Ltd. | Electronic device and method for memory allocation in electronic device |
-
2020
- 2020-04-08 CN CN202010271278.8A patent/CN113495789B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750550A (zh) * | 2015-04-20 | 2015-07-01 | 上海斐讯数据通信技术有限公司 | 移动终端应用管理系统、方法及使用次数记录生成方法 |
CN106293924A (zh) * | 2015-05-20 | 2017-01-04 | Tcl集团股份有限公司 | 安卓系统的内存管理方法及装置 |
CN107885591A (zh) * | 2016-09-27 | 2018-04-06 | 华为技术有限公司 | 为应用分配系统资源的方法和终端 |
CN106776036A (zh) * | 2016-12-30 | 2017-05-31 | 广东欧珀移动通信有限公司 | 一种资源分配方法及装置 |
CN110008021A (zh) * | 2019-03-05 | 2019-07-12 | 平安科技(深圳)有限公司 | 内存管理方法、装置、电子设备及计算机可读存储介质 |
CN110750357A (zh) * | 2019-09-23 | 2020-02-04 | 深圳传音控股股份有限公司 | 智能分配方法及终端 |
CN110825509A (zh) * | 2019-11-01 | 2020-02-21 | 深圳传音控股股份有限公司 | 应用管理方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113495789A (zh) | 2021-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108763090B (zh) | 测试环境部署方法、装置、计算机设备和存储介质 | |
US11003507B2 (en) | Mapreduce job resource sizing using assessment models | |
US10652360B2 (en) | Access scheduling method and apparatus for terminal, and computer storage medium | |
CN112465146B (zh) | 一种量子与经典混合云平台以及任务执行方法 | |
US10374970B2 (en) | Deploying a cloud service with capacity reservation followed by activation | |
CN111431970B (zh) | 基于微服务架构的资源分配方法、装置、设备及存储介质 | |
CN112887228A (zh) | 云资源管理方法、装置、电子设备及计算机可读存储介质 | |
CN112698952A (zh) | 计算资源统一管理方法、装置、计算机设备及存储介质 | |
CN113495789B (zh) | 内存分配方法及装置 | |
CN106557404B (zh) | 一种应用控制的方法及移动终端 | |
CN111163140A (zh) | 资源获取和分配的方法、装置和计算机可读存储介质 | |
CN111459676A (zh) | 一种节点资源管理方法、装置及存储介质 | |
CN106664259B (zh) | 虚拟网络功能扩容的方法和装置 | |
CN114116173A (zh) | 动态调整任务分配的方法、装置和系统 | |
CN106919450B (zh) | 资源调整方法和装置 | |
CN112905338A (zh) | 计算资源自动分配方法及装置 | |
CN108647090B (zh) | 一种资源分配方法及装置、服务器集群 | |
CN109462663B (zh) | 一种限制系统资源占用的方法、语音交互系统及存储介质 | |
CN114979286B (zh) | 容器服务的访问控制方法、装置、设备及计算机存储介质 | |
CN105933136A (zh) | 一种资源调度方法及系统 | |
WO2021104033A1 (zh) | 一种资源调度方法、装置和系统 | |
CN114924888A (zh) | 资源配置方法、数据处理方法、装置、设备和存储介质 | |
CN114172903A (zh) | slurm调度系统的节点扩容方法、装置、设备和介质 | |
CN114189439A (zh) | 一种自动扩容的方法及装置 | |
CN114595041A (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 |