G06F9/50
1.一种内存管理方法,其特征在于,包括:
当检测到业务对象为目标对象从构建的动态内存池申请内存的申请事件时,从用于记录所述动态内存池中当前未被使用的内存块的空闲数组中取出目标标识以使所述目标对象使用所述目标标识对应的内存块,并记录关于所述动态内存池的使用情况信息;
当监测到所述使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,并将申请的内存配置到所述动态内存池中;
当监测到所述使用情况信息满足第二预设条件时,将所述动态内存池中第二内存量的内存释放回所述操作系统。
2.根据权利要求1所述的方法,其特征在于,所述将申请的内存配置到所述动态内存池中后,所述方法还包括:
为第一内存量的内存中的各内存块分配标识,将分配的标识记录到所述空闲数组中。
3.根据权利要求1所述的方法,其特征在于,将所述动态内存池中第二内存量的内存释放回所述操作系统后,所述方法还包括:
将所述第二内存量的内存中各内存块的标识从所述空闲数组中删除。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述使用情况信息包括在预设时间段内所述动态内存池的内存使用率大于预设值的频率,所述记录所述动态内存池的使用情况信息后,所述方法还包括:
当监测到所述频率大于预设频率时,确定监测到所述使用情况信息满足第一预设条件。
5.根据权利要求4所述的方法,其特征在于,当监测到所述使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,包括:
当监测到所述使用情况信息满足第一预设条件时,确定在所述预设时间段内最大的内存使用率;
根据所述最大的内存使用率设置第一内存量,并向操作系统申请所述第一内存量的内存。
6.根据权利要求1-3任意一项所述的方法,其特征在于,所述使用情况信息包括系统时间对应的时间段,所述记录所述动态内存池的使用情况信息后,所述方法还包括:
当监测到所述系统时间对应的时间段为目标时间段时,确定监测到所述使用情况信息满足第一预设条件;
其中,所述目标时间段为在预设时间范围内,统计出的所述动态内存池的内存使用率大于所述预设值的频率最多的时间段。
7.根据权利要求1所述的方法,其特征在于,所述记录关于所述动态内存池的使用情况信息,包括:
在使用情况信息记录表中删除关于所述动态内存池的历史使用情况信息,并新增关于所述动态内存池的使用情况信息。
8.一种内存管理装置,其特征在于,包括:
第一处理单元,用于当检测到业务对象为目标对象从构建的动态内存池申请内存的申请事件时,从用于记录所述动态内存池中当前未被使用的内存块的空闲数组中取出目标标识以使所述目标对象使用所述目标标识对应的内存块,并记录关于所述动态内存池的使用情况信息;
第二处理单元,用于当监测到所述使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,并将申请的内存配置到所述动态内存池中;
第三处理单元,用于当监测到所述使用情况信息满足第二预设条件时,将所述动态内存池中第二内存量的内存释放回所述操作系统。
9.一种电子设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-7任一项所述的方法。
本申请涉及计算机技术领域,尤其涉及一种内存管理方法、装置、电子设备及计算机可读存储介质。
一般来说,电子设备上的业务对象,如应用程序或服务等需要申请内存的对象,可以为一些需要占用内存的功能对象,向操作系统申请内存以构建内存池,从而便于后续的内存分配操作。然而,由于该构建的内存池大小是固定的,如果该内存池太大,则内存使用率较低,会浪费内存,如果内存池太小,可能会导致内存池不够用。
本申请实施例提供了一种内存管理方法、装置、电子设备及计算机可读存储介质,不仅可以避免内存不足的情况,还可以减少内存资源的浪费。
第一方面,本申请实施例提供了一种内存管理方法,包括:
当检测到业务对象为目标对象从构建的动态内存池申请内存的申请事件时,从用于记录所述动态内存池中当前未被使用的内存块的空闲数组中取出目标标识以使所述目标对象使用所述目标标识对应的内存块,并记录关于所述动态内存池的使用情况信息;
当监测到所述使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,并将申请的内存配置到所述动态内存池中;
当监测到所述使用情况信息满足第二预设条件时,将所述动态内存池中第二内存量的内存释放回所述操作系统。
可选地,所述将申请的内存配置到所述动态内存池中后,所述方法还包括:
为第一内存量的内存中的各内存块分配标识,将分配的标识记录到所述空闲数组中。
可选地,将所述动态内存池中第二内存量的内存释放回所述操作系统后,所述方法还包括:
将所述第二内存量的内存中各内存块的标识从所述空闲数组中删除。
可选地,所述使用情况信息包括在预设时间段内所述动态内存池的内存使用率大于预设值的频率,所述记录所述动态内存池的使用情况信息后,所述方法还包括:
当监测到所述频率大于预设频率时,确定监测到所述使用情况信息满足第一预设条件。
可选地,当监测到所述使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,包括:
当监测到所述使用情况信息满足第一预设条件时,确定在所述预设时间段内最大的内存使用率;
根据所述最大的内存使用率设置第一内存量,并向操作系统申请所述第一内存量的内存。
可选地,所述使用情况信息包括系统时间对应的时间段,所述记录所述动态内存池的使用情况信息后,所述方法还包括:
当监测到所述系统时间对应的时间段为目标时间段时,确定监测到所述使用情况信息满足第一预设条件;
其中,所述目标时间段为在预设时间范围内,统计出的所述动态内存池的内存使用率大于所述预设值的频率最多的时间段。
可选地,所述记录关于所述动态内存池的使用情况信息,包括:
在使用情况信息记录表中删除关于所述动态内存池的历史使用情况信息,并新增关于所述动态内存池的使用情况信息。
第二方面,本申请实施例提供了一种内存管理装置,包括:
第一处理单元,用于当检测到业务对象为目标对象从构建的动态内存池申请内存的申请事件时,从用于记录所述动态内存池中当前未被使用的内存块的空闲数组中取出目标标识以使所述目标对象使用所述目标标识对应的内存块,并记录关于所述动态内存池的使用情况信息;
第二处理单元,用于当监测到所述使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,并将申请的内存配置到所述动态内存池中;
第三处理单元,用于当监测到所述使用情况信息满足第二预设条件时,将所述动态内存池中第二内存量的内存释放回所述操作系统。
第三方面,本申请实施例提供了一种电子设备,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如第一方面所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如第一方面所述的方法。
综上所述,电子设备可以当检测到业务对象为目标对象从构建的动态内存池申请内存的申请事件时,从用于记录所述动态内存池中当前未被使用的内存块的空闲数组中取出目标标识以使所述目标对象使用所述目标标识对应的内存块,并记录关于所述动态内存池的使用情况信息;电子设备当监测到所述使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,并将申请的内存配置到所述动态内存池中;电子设备当监测到所述使用情况信息满足第二预设条件时,将所述动态内存池中第二内存量的内存释放回所述操作系统,不仅避免了内存不足的情况,还减少了内存资源的浪费。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种内存管理方法的流程示意图;
图2是本申请实施例提供的另一种内存管理方法的流程示意图;
图3是本申请实施例提供的一种内存管理装置的结构示意图;
图4是本申请实施例提供的一种电子设备的结构示意图。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
请参阅图1,为本申请实施例提供的一种内存管理方法的流程示意图。该方法可以应用于电子设备,该电子设备可以为终端或服务器。具体的,该方法可以包括以下步骤:
S101、当检测到业务对象为目标对象从构建的动态内存池申请内存的申请事件时,从用于记录所述动态内存池中当前未被使用的内存块的空闲数组中取出目标标识以使所述目标对象使用所述目标标识对应的内存块,并记录关于所述动态内存池的使用情况信息。
其中,业务对象可以包括应用程序或服务等需要申请内存的对象。该目标对象可以为待分配内存的数据。该数据可以为需要占用内存的功能对象。举例来说,该目标对象可以为属于int型的数据,或为属于char型的数据,或为不同基本数据类型组合而成的数据(如int、char、string组合而成的数据),或还可以为数据库连接等功能对象。该目标标识为该空闲数组中满足预设条件的标识,如该空闲数组中处于最后N(N为大于或等于1的整数)位的标识,或为从当前未被使用的内存块中选取的数据量符合要求的内存块的标识,该选取的数据量符合要求的内存块的标识不一定为处于最后N位的标识。其中,该选取的数据量符合要求的内存块,可以为选取的一个数据量大于或等于该目标对象的内存块,或选取的多个数据量小于或等于该目标对象的内存块,该多个内存块的总的数据量大于或等于该目标对象。
其中,该使用情况信息可以包括以下任意一项或多项信息:内存使用率、在预设时间段内该动态内存池的内存使用率大于预设值的时长、在预设时间段内该动态内存池的内存使用率大于预设值的频率、系统时间对应的时间段、在预设时间段内该动态内存池的内存使用率小于指定值的时长、在预设时间段内该动态内存池的内存使用率小于指定值的频率。该指定值小于该预设值。
在一个实施例中,上述检测到业务对象为目标对象从构建的动态内存池申请内存的申请事件,可以是指检测到该目标对象在该动态内存池中的内存分配接口被该业务对象调用。
本申请实施例中,电子设备从用于记录所述动态内存池中当前未被使用的内存块的空闲数组中取出目标标识以使所述目标对象使用所述目标标识对应的内存块,可以包括:电子设备从用于记录所述动态内存池中当前未被使用的内存块的空闲数组中取出目标标识以分配给目标对象,并获取该目标标识对应的内存块的地址,以将该获取到的地址返回给该业务对象,从而使得该目标对象使用该目标标识对应的内存块。其中,从空闲数组中取出,可以包括:从空闲数据中删除。
在一个实施例中,电子设备可以为目标对象或者所述目标对象所属的对象类从操作系统申请预设数量的内存块以构建动态内存池,并为所述预设数量的内存块中每个内存块分配标识,并将所述每个内存块的标识记录到空闲数组中。其中,该目标对象所属的对象类是指该目标对象所属的类别。该类别可以根据实际需求设置。在刚创建动态内存池时,由于该预设数量的内存块都是未被使用的,因此可以将该预设数量的内存块中每个内存块的标识都记录到空闲数组中。后面,随着该动态内存池的内存以及该动态内存池中各内存块使用状态的变化,该空闲数组中记录的标识也将随之改变。
在一个实施例中,电子设备记录关于所述动态内存池的使用情况信息,可以包括:电子设备在使用情况信息记录表中删除关于所述动态内存池的历史使用情况信息,并新增关于所述动态内存池的使用情况信息。例如,该历史使用情况信息可以前一次增加的使用情况信息。
在一个实施例中,当该业务对象释放该目标标识对应的内存块时,根据该目标标识对应的内存块的地址计算得到该目标标识,并将该目标标识记录到该空闲数组中。
在一个实施例中,将该目标标识记录到该空闲数组中,可以包括:将所述目标标识作为所述空闲数组的最后N位记录到所述空闲数组中。
在一个实施例中,将该目标标识记录到该空闲数组中,可以包括:确定该目标标识从空闲数组取出时所在的位置,并将该目标标识放回该取出时所在的位置。
需要说明的是,电子设备在执行步骤S101之后,可以并列执行步骤S102和步骤S103。
S102、当监测到所述使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,并将申请的内存配置到所述动态内存池中。
本申请实施例中,电子设备可以在记录关于该动态内存池的使用情况信息之后,监测该使用情况信息是否满足第一预设条件,并当监测到该使用情况信息满足第一预设条件时,从操作系统申请第一内存量的内存,以将该申请的内存配置到该动态内存池中。
在一个实施例中,该使用情况信息包括内存使用率,电子设备监测该使用情况信息是否满足第一预设条件,可以包括:当监测到该动态内存池的内存使用率大于预设值时,确定监测到该使用情况信息满足第一预设条件。当内存使用率大于预设值时,表示该动态内存池出现了内存不够用的情况,需要为动态内存池增加内存量,以确保电子设备能够正常运行。
例如,该使用情况信息为内存使用率,当监测到内存使用率大于80%时,电子设备可以确定监测到该使用情况信息满足第一预设条件。
在一个实施例中,该使用情况信息包括在预设时间段内该动态内存池的内存使用率大于预设值的时长,电子设备监测该使用情况信息是否满足第一预设条件,可以包括:当监测到该时长大于预设时长时,电子设备确定监测到该使用情况信息满足第一预设条件。通过监测时长可以避免因频繁调整动态内存池的内存而带来的系统压力。
例如,该使用情况信息为在一天内该动态内存池的内存使用率大于80%的时长,当监测到该时长大于预设时长1小时,电子设备可以确定监测到该使用情况信息满足第一预设条件。
在一个实施例中,该使用情况信息包括在预设时间段内该动态内存池的内存使用率大于预设值的频率,电子设备监测该使用情况信息是否满足第一预设条件,可以包括:当监测到该频率大于预设频率时,确定监测到该使用情况信息满足第一预设条件。通过检测频率可以避免因频繁调整动态内存池的内存而带来的系统压力。
例如,该使用情况信息为在一天内该动态内存池的内存使用率大于80%的频率,当监测到该频率大于预设时长5次时,电子设备可以确定监测到该使用情况信息满足第一预设条件。
在一个实施例中,该使用情况信息包括系统时间对应的时间段,电子设备监测该使用情况信息是否满足第一预设条件,可以包括:当监测到该系统时间对应的时间段为目标时间段时,确定监测到该使用情况信息满足第一预设条件;其中,该目标时间段可以为在预设时间范围内,统计出的该动态内存池的内存使用率大于该预设值的频率最多的时间段。或,该目标时间段还可以为在预设时间范围内,统计出的该动态内存池的内存使用率大于该预设值的时长最长的时间段。
例如,在前一个月,电子设备统计到在时间段8:00-12:00,该动态内存池的内存使用率大于80%的频率为1次;在时间段20:00-24:00,该动态内存池的内存使用率大于80%的频率为10次,因此电子设备可以确定目标时间段为20:00-24:00。当监测到该系统时间对应的时间段为20:00-24:00时,电子设备可以确定监测到该使用情况信息满足第一预设条件。
在一个实施例中,当监测到该使用情况信息满足第一预设条件时,电子设备向操作系统申请第一内存量的内存,包括:当监测到该使用情况信息满足第一预设条件时,电子设备确定在该预设时间段内最大的内存使用率;电子设备根据该最大的内存使用率设置第一内存量,并向操作系统申请该第一内存量的内存。
在一个实施例中,该第一内存量可以为预设比例与动态内存池当前的内存量的乘积。例如,该预设比例可以设为50%。
在一个实施例中,服务器还可以预设不同内存使用率与增加的内存量的对应关系,该第一内存量可以是根据该最大的内存使用率以及该对应关系确定出的。较高的内存使用率将会对应较大的内存量,例如预设内存使用率80%与内存量A的对应关系,内存使用率90%与内存量B(B>A)的对应关系。
S103、当监测到所述动态内存池的内存使用情况信息满足第二预设条件时,将所述动态内存池中第二内存量的内存释放回所述操作系统。
本申请实施例中,电子设备还可以监测该使用情况信息是否满足第二预设条件,并当监测到该使用情况信息满足第二预设条件时,将该动态内存池中第二内存量的内存释放回该操作系统。其中,该第二内存量的内存为该动态内存池当前未被使用的内存。步骤S102中的第一预设条件与该第二预设条件不同。该第一预设条件是指预设的用于使动态内存池申请内存的条件,该二预设条件是指预设的用于使动态内存池释放内存的条件。本申请实施例通过第一预设条件和第二预设条件的判断,可以达到对动态内存池动态配置的目的,从而有效地分配系统的内存资源。
在一个实施例中,该使用情况信息包括内存使用率,电子设备监测该使用情况信息是否满足第二预设条件,可以包括:当监测到该动态内存池的内存使用率小于指定值时,确定监测到该使用情况信息满足第二预设条件。该指定值与前述预设值不同,该指定值小于该预设值,例如,该指定值为20%,该预设值为80%。当内存使用率小于指定值时,表示该动态内存池出现了内存较多的情况,为了避免资源的浪费,可以适度减少内存量。
例如,该使用情况信息为内存使用率,当监测到内存使用率小于20%时,电子设备可以确定监测到该使用情况信息满足第二预设条件。
在一个实施例中,该使用情况信息包括在预设时间段内该动态内存池的内存使用率小于指定值的时长,电子设备监测该使用情况信息是否满足第一预设条件,可以包括:当该时长大于指定时长时,电子设备确定监测到该使用情况信息满足第二预设条件。其中,该指定时长可以与前述预设时长相同或不同。通过监测时长可以避免因频繁调整动态内存池的内存而带来的系统压力。
例如,该使用情况信息为在一天内该动态内存池的内存使用率小于30%的时长,当监测到该时长大于指定时长6小时,电子设备可以确定监测到该使用情况信息满足第二预设条件。
在一个实施例中,该使用情况信息还包括在预设时间段内该动态内存池的内存使用率小于指定值的频率,电子设备监测该使用情况信息是否满足第二预设条件,可以包括:当该频率大于指定频率时,确定监测到该使用情况信息满足第二预设条件。其中,该指定频率可以与前述预设频率相同或不同。通过检测频率可以避免因频繁调整动态内存池的内存而带来的系统压力。
例如,该使用情况信息为在一天内该动态内存池的内存使用率小于30%的频率,当监测到该频率大于指定频率20次时,电子设备可以确定监测到该使用情况信息满足第二预设条件。
在一个实施例中,该使用情况信息包括系统时间对应的时间段,电子设备监测该使用情况信息是否满足第二预设条件,可以包括:当监测到该系统时间对应的时间段为指定时间段时,确定监测到该使用情况信息满足第二预设条件;其中,该指定时间段为在预设时间范围内,统计出的该动态内存池的内存使用率小于该指定值的频率最多的时间段。该指定时间段与前述预设时间段不同。本申请实施例可以依据不同时间段达到对动态内存池动态配置的目的,从而有效地动态分配系统的内存资源。
例如,在前一个月,电子设备统计到在时间段8:00-12:00,该动态内存池的内存使用率小于30%的频率为1次;在时间段20:00-24:00,该动态内存池的内存使用率小于30%的频率为10次,因此电子设备可以确定指定时间段为20:00-24:00。当监测到该系统时间对应的时间段为20:00-24:00时,电子设备可以确定监测到该使用情况信息满足第二预设条件。
在一个实施例中,当监测到该使用情况信息满足第二预设条件时,将所述动态内存池中第二内存量的内存释放回所述操作系统,包括:当监测到该使用情况信息满足第二预设条件时,电子设备确定在该预设时间段内最大的内存使用率;电子设备根据该最大的内存使用率确定需要减少的第二内存量,并将所述动态内存池中第二内存量的内存释放回所述操作系统。
在一个实施例中,该第二内存量可以为指定比例与动态内存池的内存量的乘积。其中,该指定比例与最大的内存使用率的和小于1。例如,最大的内存使用率为50%,该指定比例可以为30%。
在一个实施例中,服务器还可以预设不同内存使用率与减小的内存量的对应关系,该第二内存量可以是根据该最大的内存使用率以及该对应关系确定出的。较高的内存使用率将会对应较较小需要减少的内存量。
可见,图1所示的实施例中,电子设备可以在检测到业务对象为目标对象从构建的动态内存池申请内存的申请事件时,从空闲数组中确定出目标标识以使业务对象使用该目标标识对应的内存块,并记录该动态内存池的使用情况信息,当监测到该动态内存池的使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,并将申请的内存配置到动态内存池中;当检测到该动态内存池的使用情况信息满足第二预设条件时,将该动态内存池中第二内存量的内存释放回操作系统,从而动态的增加和减少该动态内存池的内存,不仅避免了内存不足的情况,减少了内存资源的浪费。
请参阅图2,图2为本申请实施例提供的另一个内存管理方法的流程示意图。该方法可以应用于电子设备,该电子设备可以为终端或服务器。具体的,该方法可以包括以下步骤:
S201、当检测到业务对象为目标对象从构建的动态内存池申请内存的申请事件时,从用于记录所述动态内存池中当前未被使用的内存块的空闲数组中取出目标标识以使所述目标对象使用所述目标标识对应的内存块,并记录关于所述动态内存池的使用情况信息。
S202、当监测到所述使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,并将申请的内存配置到所述动态内存池中。
本申请实施例中,电子设备可以在执行步骤S201之后,并列执行步骤S202和步骤S204,其中步骤S201、S202、S204可以依次参见图1实施例中的步骤S101、S102和S103,本申请实施例在此不做赘述。
S203、为第一内存量的内存中的各内存块分配标识,将分配的标识记录到所述空闲数组中。
本申请实施例中,电子设备还可以为第一内存量的内存中的各内存块分配标识,并将分配的标识记录到空闲数组中。
其中,电子设备可以为第一内存量的内存中的各内存块分配标识,并可以将分配的标识记录到空闲数组中。
在一个实施例中,该分配的标识可以是按照预设的标识计算规则,由该第一内存量的内存中各内存块的地址计算得到的。该预设的标识计算规则可以包括根据位置偏移确定出的规则。
在一个实施例中,电子设备可以确定该分配的标识的数量为M,并将该分配的标识作为最后M位记录到该空闲数组中。
在一个实施例中,电子设备可以确定该分配的标识的数量为M(M为大于或等于1的整数),并从该空闲数组中确定出M个空余的位置,该M个空余的位置为电子设备根据该空闲数组中的各位置以及记录的位置与标识的对应关系,确定出的未对应有标识的位置,服务器将该分配的标识分别记录到该M个空余的位置中。
S204、当监测到所述动态内存池的内存使用情况信息满足第二预设条件时,将所述动态内存池中第二内存量的内存释放回所述操作系统。
S205、将所述第二内存量的内存中各内存块的标识从所述空闲数组中删除。
本申请实施例中,电子设备可以将该第二内存量的内存中各内存块的标识从空闲数组中删除。
在一个实施例中,电子设备还可以设置返还时间,当监测到系统时间为该返还时间时,将该动态内存池中第二内存量的内存释放回该操作系统。
可见,图2所示的实施例中,电子设备在为该动态内存池增加第一内存量的内存后,还可以将该第一内存量的内存中各内存块的标识写入空闲数组中,并且该电子设备还可以在为该动态内存池减少第二内存量的内存,将该第二内存量的内存中各内存块的标识从该空闲数组中删除,以便后续有效地动态分配内存。
请参阅图3,为本申请实施例提供的一种内存管理装置的结构示意图。该装置可以应用于电子设备。具体地,该装置可以包括:
第一处理单元31,用于当检测到业务对象为目标对象从构建的动态内存池申请内存的申请事件时,从用于记录所述动态内存池中当前未被使用的内存块的空闲数组中取出目标标识以使所述目标对象使用所述目标标识对应的内存块,并记录关于所述动态内存池的使用情况信息。
第二处理单元32,用于当监测到所述使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,并将申请的内存配置到所述动态内存池中;
第三处理单元33,用于当监测到所述使用情况信息满足第二预设条件时,将所述动态内存池中第二内存量的内存释放回所述操作系统。
在一种可选的实施方式中,第二处理单元32,还用于在将申请的内存配置到所述动态内存池中后,为第一内存量的内存中的各内存块分配标识,将分配的标识记录到所述空闲数组中。
在一种可选的实施方式中,第三处理单元33,还用于在将所述动态内存池中第二内存量的内存释放回所述操作系统后,将所述第二内存量的内存中各内存块的标识从所述空闲数组中删除。
在一种可选的实施方式中,所述使用情况信息包括在预设时间段内所述动态内存池的内存使用率大于预设值的频率。
在一种可选的实施方式中,第一处理单元31,还用于在记录所述动态内存池的使用情况信息后,当监测到所述频率大于预设频率时,确定监测到所述使用情况信息满足第一预设条件。
在一种可选的实施方式中,第二处理单元32具体用于当监测到所述使用情况信息满足第一预设条件时,确定在所述预设时间段内最大的内存使用率;根据所述最大的内存使用率设置第一内存量,并向操作系统申请所述第一内存量的内存。
在一种可选的实施方式中,所述使用情况信息包括系统时间对应的时间段。
在一种可选的实施方式中,第一处理单元31,还用于在记录所述动态内存池的使用情况信息后,当监测到所述系统时间对应的时间段为目标时间段时,确定监测到所述使用情况信息满足第一预设条件;其中,所述目标时间段为在预设时间范围内,统计出的所述动态内存池的内存使用率大于所述预设值的频率最多的时间段。
在一种可选的实施方式中,第一处理单元31记录关于所述动态内存池的使用情况信息,具体为在使用情况信息记录表中删除关于所述动态内存池的历史使用情况信息,并新增关于所述动态内存池的使用情况信息。
可见,图3所示的实施例中,电子设备可以在检测到业务对象为目标对象从构建的动态内存池申请内存的申请事件时,从空闲数组中确定出目标标识以使业务对象使用该目标标识对应的内存块,并记录该动态内存池的使用情况信息,当监测到该动态内存池的使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,并将申请的内存配置到动态内存池中;当检测到该动态内存池的使用情况信息满足第二预设条件时,将该动态内存池中第二内存量的内存释放回操作系统,从而动态的增加和减少该动态内存池的内存,不仅避免了内存不足的情况,还减少了内存资源的浪费。
请参阅图4,为本申请实施例提供的一种电子设备的结构示意图。其中,该电子设备可以为终端或服务器。其中,本实施例中所描述的电子设备可以包括:一个或多个处理器1000和存储器2000,处理器1000和存储器2000可以通过总线连接。可选地,该电子设备还可以包括一个或多个输入设备3000、一个或多个输出设备4000,处理器1000、存储器2000、一个或多个输入设备3000、一个或多个输出设备4000之间可以通过总线连接。输入设备3000、输出设备4000可以包括标准的有线或无线通信接口。
处理器1000可以是中央处理模块(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器2000可以是高速RAM存储器,也可为非不稳定的存储器(non-volatilememory),例如磁盘存储器。存储器2000用于存储一组程序代码,输入设备3000、输出设备4000和处理器1000可以调用存储器2000中存储的程序代码。具体地:
处理器1000,用于当检测到业务对象为目标对象从构建的动态内存池申请内存的申请事件时,从用于记录所述动态内存池中当前未被使用的内存块的空闲数组中取出目标标识以使所述目标对象使用所述目标标识对应的内存块,并记录关于所述动态内存池的使用情况信息;当监测到所述使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,并将申请的内存配置到所述动态内存池中;当监测到所述使用情况信息满足第二预设条件时,将所述动态内存池中第二内存量的内存释放回所述操作系统。
可选地,处理器1000,还用于在将申请的内存配置到所述动态内存池中后,为第一内存量的内存中的各内存块分配标识,将分配的标识记录到所述空闲数组中。
可选地,处理器1000,还用于在将所述动态内存池中第二内存量的内存释放回所述操作系统后,将所述第二内存量的内存中各内存块的标识从所述空闲数组中删除。
可选地,所述使用情况信息包括在预设时间段内所述动态内存池的内存使用率大于预设值的频率。
可选地,处理器1000,还用于在记录所述动态内存池的使用情况信息后,当监测到所述频率大于预设频率时,确定监测到所述使用情况信息满足第一预设条件。
可选地,处理器1000当监测到所述使用情况信息满足第一预设条件时,向操作系统申请第一内存量的内存,具体为当监测到所述使用情况信息满足第一预设条件时,确定在所述预设时间段内最大的内存使用率;根据所述最大的内存使用率设置第一内存量,并向操作系统申请所述第一内存量的内存。
可选地,所述使用情况信息包括系统时间对应的时间段。
可选地,处理器1000,还用于在记录所述动态内存池的使用情况信息后,当监测到所述系统时间对应的时间段为目标时间段时,确定监测到所述使用情况信息满足第一预设条件;其中,所述目标时间段为在预设时间范围内,统计出的所述动态内存池的内存使用率大于所述预设值的频率最多的时间段。
可选地,处理器1000所述记录关于所述动态内存池的使用情况信息,具体为在使用情况信息记录表中删除关于所述动态内存池的历史使用情况信息,并新增关于所述动态内存池的使用情况信息。
具体实现中,本申请实施例中所描述的处理器1000、输入设备3000、输出设备4000可执行图1-图2实施例所描述的实现方式,也可执行本申请实施例所描述的实现方式,在此不再赘述。
在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以是两个或两个以上模块集成在一个模块中。上述集成的模块既可以采样硬件的形式实现,也可以采样软件功能模块的形式实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的介质为计算机可读存储介质,该计算机可读存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本申请一种较佳实施例而已,当然不能以此来限定本申请之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本申请权利要求所作的等同变化,仍属于发明所涵盖的范围。
本文发布于:2023-04-13 17:14:16,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/3/86124.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |