一种内存使用情况统计方法、装置、设备及介质制造方法及图纸

技术编号:31847646 阅读:13 留言:0更新日期:2022-01-12 13:29
本申请公开了一种内存使用情况统计方法、装置、设备及介质,包括:当软件服务调用目标函数进行内存申请时,则调用所述目标函数对应的预设内存申请逻辑;利用所述预设内存申请逻辑判断所述目标函数是否为待进行内存使用情况统计的对象,若是,则对所述目标函数对应的内存使用情况进行统计。这样,在调用目标函数进行内存申请时,便会调用该目标函数对应的预设内存申请逻辑,若所述目标函数为待进行内存使用情况统计的对象,则对该目标函数对应的内存使用情况进行统计,将内存使用情况统计精确到函数粒度,能够提升内存使用情况统计的准确度,并降低问题定位难度。并降低问题定位难度。并降低问题定位难度。

【技术实现步骤摘要】
一种内存使用情况统计方法、装置、设备及介质


[0001]本申请涉及存储
,特别涉及一种内存使用情况统计方法、装置、设备及介质。

技术介绍

[0002]在软件服务开发过程中,工程师都会非常关心内存的使用情况,担心编写的程序存在内存泄漏,内存越界等严重问题,一旦由于疏忽或经验不足引入问题,定位的难度非常大,且通常会导致严重的故障。尤其是在反复申请释放内存空间的使用场景,比如热插拔,模块的卸载加载等场景,更容易出现问题。因此,在开发调试过程中,能够有效的对内存使用情况进行统计,可以避免很多问题。
[0003]目前,有一些系统工具可以查看系统下内存的使用情况,但存在统计不准确,统计太笼统,无法定位问题等弊端。

技术实现思路

[0004]有鉴于此,本申请的目的在于提供一种内存使用情况统计方法、装置、设备及介质,能够提升内存使用情况统计的准确度,并降低问题定位难度。其具体方案如下:第一方面,本申请公开了一种内存使用情况统计方法,包括:当软件服务调用目标函数进行内存申请时,则调用所述目标函数对应的预设内存申请逻辑;利用所述预设内存申请逻辑判断所述目标函数是否为待进行内存使用情况统计的对象,若是,则对所述目标函数对应的内存使用情况进行统计。
[0005]可选的,还包括:获取内存统计对象清单;相应的,所述利用所述预设内存申请逻辑判断所述目标函数是否为待进行内存使用情况统计的对象,包括:利用所述预设内存申请逻辑,并基于所述内存统计对象清单判断所述目标函数是否为待进行内存使用情况统计的对象。
[0006]可选的,所述获取内内存统计对象清单,包括:获取包括函数名和/或文件名的内存统计对象清单。
[0007]可选的,若所述内存统计对象清单包括文件名,则所述方法还包括:基于所述内存统计对象清单判断所述目标函数所属的文件是否为待进行内存使用情况统计的对象;若是,则对该文件的内存使用情况进行统计。
[0008]可选的,所述对所述目标函数对应的内存使用情况进行统计,包括:对所述目标函数申请内存的大小、起始地址、在所属文件中的位置进行统计。
[0009]可选的,所述对所述目标函数对应的内存使用情况进行统计之后,还包括:
将相应的统计信息保存至内存;当获取到内存使用情况统计导出指令,则从所述内存中将所述统计信息导出至文件中。
[0010]可选的,还包括:获取故障注入对象清单;当所述软件服务调用目标函数进行内存申请时,基于所述故障注入对象清单判断所述目标函数是否需要故障注入,若是,则返回申请内存失败信息。
[0011]第二方面,本申请公开了一种内存使用情况统计装置,包括:内存申请逻辑调用模块,用于当软件服务调用目标函数进行内存申请时,则调用所述目标函数对应的预设内存申请逻辑;内存使用情况统计模块,用于利用所述预设内存申请逻辑判断所述目标函数是否为待进行内存使用情况统计的对象,若是,则对所述目标函数对应的内存使用情况进行统计。
[0012]第三方面,本申请公开了一种电子设备,包括:存储器,用于保存计算机程序;处理器,用于执行所述计算机程序,以实现前述的内存使用情况统计方法。
[0013]第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的内存使用情况统计方法。
[0014]可见,本申请当软件服务调用目标函数进行内存申请时,则调用所述目标函数对应的预设内存申请逻辑,然后利用所述预设内存申请逻辑判断所述目标函数是否为待进行内存使用情况统计的对象,若是,则对所述目标函数对应的内存使用情况进行统计。也即,本申请在调用目标函数进行内存申请时,便会调用该目标函数对应的预设内存申请逻辑,若所述目标函数为待进行内存使用情况统计的对象,则对该目标函数对应的内存使用情况进行统计,这样,将内存使用情况统计精确到函数粒度,能够提升内存使用情况统计的准确度,并降低问题定位难度。
附图说明
[0015]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0016]图1为本申请提供的一种内存使用情况统计方法流程图;图2为本申请提供的一种具体的内存使用情况统计方法流程图;图3为本申请提供的一种具体的内存使用情况统计方法流程图;图4为本申请提供的一种内存使用情况统计装置结构示意图;图5为本申请提供的一种电子设备结构图。
具体实施方式
[0017]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0018]目前,有一些系统工具可以查看系统下内存的使用情况,但存在统计不准确,统计太笼统,无法定位问题等弊端。为此,本申请提供了一种内存使用情况统计方案,能够提升内存使用情况统计的准确度,并降低问题定位难度。
[0019]参见图1所示,本申请实施例公开了一种内存使用情况统计方法,包括:步骤S11:当软件服务调用目标函数进行内存申请时,则调用所述目标函数对应的预设内存申请逻辑。
[0020]其中,目标函数为所述软件服务中原有的进行内存申请的函数,所述预设内存申请逻辑封装有所述目标函数,以及内存统计逻辑。
[0021]也即,本申请实施例对软件服务的内存申请函数进行封装重定义,将软件服务中每个原有的进行内存申请的函数以及内存统计逻辑封装为相应的预设内存申请逻辑。当调用任一原有的进行内存申请的函数时,调用该函数对应的预设内存申请逻辑。其中,预设内存申请逻辑的名称与对应的目标函数的名称一致。
[0022]以C语言kzalloc为例:#define kzalloc(size, flag) ({统计模型实现+系统调用kzalloc}),通过define重新对软件服务中申请内存函数进行定义,使其具有了统计功能,将封装后的预设内存申请逻辑导入软件服务中,具体的可以,将所有的预设内存申请逻辑封装为一个内存统计模块,将该内存统计模块导入需要进行内存使用情况统计的软件服务中。
[0023]这样,能够保持函数原有的功能,无需对软件服务原有的函数进行改动,可以在不改变原有程序的基础上,快速的进行内存统计,并且不受开发平台限制,不受开发语言限制,适用性更广泛,通用性强,实现了高可用性和高可移植性。
[0024]步骤S12:利用所述预设内存申请逻辑判断所述目标函数是否为待进行内存使用情况统计的对象,若是,则对所述目标函数对应的内存使用情况进行统计。
[0025]在具体的实施方式中,可以获取内存统计对象清单;利用所述预设内存申请逻辑,并基于所述内存统计对象清单判断所述目标函数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存使用情况统计方法,其特征在于,包括:当软件服务调用目标函数进行内存申请时,则调用所述目标函数对应的预设内存申请逻辑;其中,所述预设内存申请逻辑封装有所述目标函数,以及内存统计逻辑;利用所述预设内存申请逻辑判断所述目标函数是否为待进行内存使用情况统计的对象,若是,则对所述目标函数对应的内存使用情况进行统计;所述方法还包括:获取故障注入对象清单;当所述软件服务调用目标函数进行内存申请时,基于所述故障注入对象清单判断所述目标函数是否需要故障注入,若是,则返回申请内存失败信息。2.根据权利要求1所述的内存使用情况统计方法,其特征在于,还包括:获取内存统计对象清单;相应的,所述利用所述预设内存申请逻辑判断所述目标函数是否为待进行内存使用情况统计的对象,包括:利用所述预设内存申请逻辑,并基于所述内存统计对象清单判断所述目标函数是否为待进行内存使用情况统计的对象。3.根据权利要求2所述的内存使用情况统计方法,其特征在于,所述获取内存统计对象清单,包括:获取包括函数名和/或文件名的内存统计对象清单。4.根据权利要求3所述的内存使用情况统计方法,其特征在于,若所述内存统计对象清单包括文件名,则所述方法还包括:基于所述内存统计对象清单判断所述目标函数所属的文件是否为待进行内存使用情况统计的对象;若是,则对该文件的内存使用情况进行统计。5.根据权利要求1所述的内存使用情况统计方法,其特征在于,所述对所述目标函数对应的内存使用情况进行统计,包括:对所述目标函数申请内存的大小、起始地址、在所属文件中的位置进行统计。6...

【专利技术属性】
技术研发人员:李长飞
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

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

1