System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 内存泄露的确定方法和装置、存储介质及电子设备制造方法及图纸_技高网

内存泄露的确定方法和装置、存储介质及电子设备制造方法及图纸

技术编号:40762477 阅读:3 留言:0更新日期:2024-03-25 20:13
本申请实施例提供了一种内存泄露的确定方法和装置、存储介质及电子设备,该内存泄露的确定方法包括:通过数据收集模块采集内存信息,其中,内存信息是通过目标类型的内存函数分配得到的内存信息,其中,数据收集模块是通过操作系统允许使用的预设技术构建的,预设技术是用于在操作系统中创建非干扰性事件的技术;通过泄漏检测模块对内存信息进行分析,得到分析结果,其中,泄露检测模块是通过预设技术构建的;在分析结果指示内存信息满足预设条件的情况下,确定内存信息在操作系统中对应的目标系统内存出现内存泄露。解决了通过在系统内存中增加模块hook相关函数的方式对系统内存是否泄露进行检测,可能影响操作系统的性能和稳定性的问题。

【技术实现步骤摘要】

本申请实施例涉及计算机操作系统领域,具体而言,涉及一种内存泄露的确定方法和装置、存储介质及电子设备


技术介绍

1、linux操作系统内存泄露是指在程序运行或操作系统运行过程中,进程无法正确释放已经不再使用的内存空间,导致内存消耗过高的问题,是在软件开发和系统运维过程中常见的操作系统异常问题。而随着计算机科技的不断发展,linux内核系统变得越来越复杂,内存泄露问题成为了一个普遍存在的问题。内存泄露可能导致系统性能下降,甚至引起系统崩溃,严重影响系统的稳定性和可靠性。

2、相关技术中,内存泄露检测方法主要分为两大类:静态分析和动态分析。静态分析通过分析程序的源代码来识别潜在的内存泄露,但可能受到代码复杂性和静态分析技术的限制。动态分析在程序运行时进行内存监控和检测,实时地发现和报告内存泄漏,但可能影响操作系统的性能和稳定性。

3、具体地,静态分析通过分析程序的源代码来识别潜在的内存泄露,但可能受到代码复杂性和静态分析技术的限制,且linux内核代码量大,上层应用多种多样,对于在运行期间导致的内存泄露,静态分析往往无法满足这种场景。动态分析会在程序运行时进行内存监控和检测,相关技术中往往使用扩展内核模块的方式,通过在内核中增加模块hook相关函数的方式,实时地检测内存分配情况并报告linux内核中是否存在内存泄露的问题。但是这种内核hooks方式往往灵活性比较低,并且可能影响操作系统的性能和稳定性。此外,这些工具通过分配和释放、是否匹配的模式去识别泄露点在哪里,这种方式往往误报率比较高。

4、针对现有技术中,通过在系统内存中增加模块hook相关函数的方式对系统内存是否泄露进行检测,可能影响操作系统的性能和稳定性的问题,尚未得到有效解决。


技术实现思路

1、本申请实施例提供了一种内存泄露的确定方法和装置、存储介质及电子设备,以至少解决现有技术中通过在系统内存中增加模块hook相关函数的方式对系统内存是否泄露进行检测,可能影响操作系统的性能和稳定性的问题。

2、根据本申请的一个实施例,提供了一种内存泄露的确定方法,包括:通过数据收集模块采集内存信息,其中,所述内存信息是通过目标类型的内存函数分配得到的内存信息,其中,所述数据收集模块是通过操作系统允许使用的预设技术构建的,所述预设技术是用于在所述操作系统中创建非干扰性事件的技术;通过泄漏检测模块对所述内存信息进行分析,得到分析结果,其中,所述泄露检测模块是通过所述预设技术构建的;在所述分析结果指示所述内存信息满足预设条件的情况下,确定所述内存信息在所述操作系统中对应的目标系统内存出现内存泄露。

3、在一个示例性实施例中,通过数据收集模块采集内存信息,包括:在需要采集第一目标类型的内存函数分配的内存信息的情况下,获取所述操作系统中的虚拟文件,其中,所述虚拟文件中记载有所述第一目标类型的内存函数对所述操作系统的系统内存的内存分配情况,其中,所述目标类型包括所述第一目标类型;从所述虚拟文件中读取所述第一目标类型的内存函数对所述系统内存的分配信息,并将所述分配信息保存在第一链表中,其中,所述分配信息包括:内存大小、函数名称、函数地址;按照预设顺序对所述第一链表进行排序,得到第二链表,并将第二链表确定为所述内存信息。

4、在一个示例性实施例中,通过泄漏检测模块对所述内存信息进行分析,得到分析结果,包括:确定所述第一目标类型的内存函数对应的第一预设条件,其中,所述预设条件包括所述第一预设条件,所述第一预设条件包括以下之一:所述第二链表中的任一分配信息的内存大小大于第一阈值、所述任一分配信息的内存大小大于第二阈值,且在所述系统内存中的占比高于第三阈值;将所述任一分配信息和第一比较阈值进行比较,得到所述分析结果,其中,所述阈值包括:所述第一阈值、所述第二阈值、所述第三阈值。

5、在一个示例性实施例中,通过数据收集模块采集内存信息,包括:在需要采集第二目标类型的内存函数分配的内存信息、且所述第二目标类型的内存函数包括分配函数和释放函数的情况下,获取调用函数的第一函数信息,并将所述第一函数信息保存在第三链表中,其中,所述目标类型包括所述第二目标类型,所述分配函数用于对所述操作系统的系统内存进行分配,所述释放函数用于对被占用的所述系统内存进行释放,其中,所述第一函数信息是所述调用函数调用所述分配函数产生的函数信息;获取所述调用函数的第二函数信息,其中,所述第二函数信息是所述调用函数调用所述释放函数产生的函数信息;通过所述第二函数信息对所述第三链表执行更新操作,得到第四链表,其中,所述更新操作用于指示将所述第三链表中与所述第二函数信息相同的第一函数信息删除;对所述第四链表执行整理操作,得到满足所述泄露检测模块分析要求的第五链表,并将所述第五链表确定为所述内存信息。

6、在一个示例性实施例中,对所述第四链表执行整理操作,得到满足所述泄露检测模块分析要求的第五链表,包括:对于所述第四链表中包括的第三函数信息,将当前时间与所述第三函数信息包括的内存申请时间的差值确定为所述第三函数信息的存活时间;将所述存活时间更新到所述第四链表中,得到所述第五链表。

7、在一个示例性实施例中,将当前时间与所述第三函数信息包括的内存申请时间的差值确定为所述第三函数信息的存活时间之后,所述方法还包括:在所述第三函数信息还包括多个内存指针的情况下,确定所述多个内存指针分别指向的内存对象;确定多个所述内存对象中的相似内存对象,得到所述相似内存对象的数量;将所述存活时间和所述数量更新到所述第四链表中,得到所述第五链表。

8、在一个示例性实施例中,通过泄漏检测模块对所述内存信息进行分析,得到分析结果,包括:确定所述第二目标类型的内存函数对应的第二预设条件,其中,所述预设条件包括所述第二预设条件,所述第二预设条件包括以下至少之一:所述存活时间大于第五阈值、所述数量大于第六阈值、内存申请大小大于第七阈值,其中,所述内存申请大小是所述第五链表中的第四函数信息中包括的申请内存大小;将所述第四函数信息和第二比较阈值进行比较,得到所述分析结果,其中,所述第二比较阈值包括:所述第五阈值、所述第六阈值、所述第七阈值。

9、根据本申请的另一个实施例,提供了一种内存泄露的确定装置,包括:数据收集模块,用于采集内存信息,其中,所述内存信息是通过目标类型的内存函数分配得到的内存信息,其中,所述数据收集模块是通过操作系统允许使用的预设技术构建的,所述预设技术是用于在所述操作系统中创建非干扰性事件的技术;泄漏检测模块,用于对所述内存信息进行分析,得到分析结果,其中,所述泄露检测模块是通过所述预设技术构建的;所述泄漏检测模块,还用于在所述分析结果指示所述内存信息满足预设条件的情况下,确定所述内存信息在所述操作系统中对应的目标系统内存出现内存泄露。

10、根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的本文档来自技高网...

【技术保护点】

1.一种内存泄露的确定方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,通过数据收集模块采集内存信息,包括:

3.根据权利要求2所述的方法,其特征在于,通过泄漏检测模块对所述内存信息进行分析,得到分析结果,包括:

4.根据权利要求1所述的方法,其特征在于,通过数据收集模块采集内存信息,包括:

5.根据权利要求4所述的方法,其特征在于,对所述第四链表执行整理操作,得到满足所述泄露检测模块分析要求的第五链表,包括:

6.根据权利要求5所述的方法,其特征在于,将当前时间与所述第三函数信息包括的内存申请时间的差值确定为所述第三函数信息的存活时间之后,所述方法还包括:

7.根据权利要求6所述的方法,其特征在于,通过泄漏检测模块对所述内存信息进行分析,得到分析结果,包括:

8.一种内存泄露的确定装置,其特征在于,包括:

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至7任一项中所述的方法的步骤

10.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至7任一项中所述的方法的步骤。

...

【技术特征摘要】

1.一种内存泄露的确定方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,通过数据收集模块采集内存信息,包括:

3.根据权利要求2所述的方法,其特征在于,通过泄漏检测模块对所述内存信息进行分析,得到分析结果,包括:

4.根据权利要求1所述的方法,其特征在于,通过数据收集模块采集内存信息,包括:

5.根据权利要求4所述的方法,其特征在于,对所述第四链表执行整理操作,得到满足所述泄露检测模块分析要求的第五链表,包括:

6.根据权利要求5所述的方法,其特征在于,将当前时间与所述第三函数信息包括的内存申请时间的差值确定为所述...

【专利技术属性】
技术研发人员:韩春超吴保锡许鑫
申请(专利权)人:苏州元脑智能科技有限公司
类型:发明
国别省市:

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

1