System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及通信,尤其涉及一种内存泄露检测方法、装置、设备和存储介质。
技术介绍
1、在计算机领域中,内存泄露是指由于疏忽或错误造成程序已经不再使用的内存无法被回收。随着应用程序的运行,系统中可用的内存越来越少,导致系统由于没有足够的内存而瘫痪。
2、为了解决内存泄露的问题,需要对内存泄露的原因进行检测。在现有技术中,通常对内存泄露进行检测的方式为,轮询的保存进程的内存状态快照,进而分析快照,排查内存泄露的原因。
3、然而,采用轮询保存内存状态快照的方式,也需要消耗当前进程的程序资源,以此影响了当前进程的运行。因此,如何提供一种零性能损耗的内存泄露检测方法,是本领域待以解决的技术难题。
技术实现思路
1、本专利技术的主要目的在于提供了一种内存泄露检测方法、装置、计算机设备和存储介质,旨在解决当前的内存泄露检测方法需要消耗当前进程的程序资源,以此影响了当前进程的运行的技术问题。
2、为实现上述目的,本专利技术提供一种内存泄露检测方法,该方法包括:
3、在检测到当前进程内存报错的情况下,调用不属于所述当前进程的代理函数;
4、通过所述代理函数保存所述当前进程对应的内存状态快照;
5、对所述内存状态快照进行分析,生成内存泄露的检测结果。
6、可选地,所述在检测到当前进程内存报错的情况下,调用不属于所述当前进程的代理函数包括:
7、在检测到所述当前进程内存溢出的情况下,生成所述当前进程对应的内
8、拦截所述内存溢出警报,并调用与所述内存溢出警报关联的所述代理函数。
9、可选地,所述在检测到当前进程内存报错的情况下,调用不属于所述当前进程的代理函数之前,所述方法还包括:
10、获取各个进程的内存空间;
11、基于所述各个进程的内存空间,生成所述各个进程对应的报警触发函数,所述报警触发函数用于在对应的进程内存溢出时,生成内存溢出警报;
12、编译所述各个进程的代码,建立各个进程对应的内存溢出警报与代理函数之间的关联关系。
13、可选地,所述通过所述代理函数保存所述当前进程对应的内存状态快照,包括:
14、通过所述代理函数重新分配所述当前进程的内存;以及,
15、通过所述代理函数保存所述当前进程对应的内存状态快照。
16、可选地,所述通过所述代理函数重新分配所述当前进程的内存,包括:
17、调用所述代理函数,删除所述当前进程中属于los区域的内存;
18、调用所述代理函数,重新分类删除los区域内存后的当前进程的内存。
19、可选地,所述通过所述代理函数保存所述当前进程对应的内存状态快照,包括:
20、固定所述当前进程的内存状态快照;
21、创建子进程;
22、在所述子进程中保存所述当前进程的内存状态快照。
23、可选地,所述对所述内存状态快照进行分析,生成内存泄露的检测结果,包括:
24、从所述内存状态快照中获取堆内存的地址和引用关系;
25、基于所述堆内存的地址和引用关系,生成内存泄露的检测结果。
26、此外,为实现上述目的,本专利技术还提供一种内存泄露检测装置,所述内存泄露检测装置包括:
27、调用模块,用于在检测到当前进程内存报错的情况下,调用不属于所述当前进程的代理函数;
28、保存模块,用于通过所述代理函数保存所述当前进程对应的内存状态快照;
29、分析模块,用于对所述内存状态快照进行分析,生成内存泄露的检测结果。
30、为了解决上述技术问题,本申请实施例还提供一种计算机设备,采用了如下所述的技术方案:
31、所述计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现本申请实施例中提出的任一项所述的内存泄露检测方法的步骤。
32、为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,采用了如下所述的技术方案:
33、所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本申请实施例中提出的任一项所述的内存泄露检测方法的步骤。
34、与现有技术相比,本申请实施例主要有以下有益效果:
35、本申请实施例提供了内存泄露检测方法,包括:在检测到当前进程内存报错的情况下,调用不属于当前进程的代理函数;通过代理函数保存当前进程对应的内存状态快照;对内存状态快照进行分析,生成内存泄露的检测结果。本申请实施例中,调用代理函数保存当前进程对应的内存状态快照,对内存状态快照进行分析,以此生成内存泄露的检测结果,其中,上述代理函数不属于当前进程。因此代理函数的调用不会消耗当前进程的程序资源,也不会影响当前进程的运行。
本文档来自技高网...【技术保护点】
1.一种内存泄露检测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述在检测到当前进程内存报错的情况下,调用不属于所述当前进程的代理函数包括:
3.根据权利要求2所述的方法,其特征在于,所述在检测到当前进程内存报错的情况下,调用不属于所述当前进程的代理函数之前,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述通过所述代理函数保存所述当前进程对应的内存状态快照,包括:
5.根据权利要求4所述的方法,其特征在于,所述通过所述代理函数重新分配所述当前进程的内存,包括:
6.根据权利要求4所述的方法,其特征在于,所述通过所述代理函数保存所述当前进程对应的内存状态快照,包括:
7.根据权利要求1所述的方法,其特征在于,所述对所述内存状态快照进行分析,生成内存泄露的检测结果,包括:
8.一种内存泄露检测装置,其特征在于,包括:
9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的内存泄露检测方法的步骤。
...【技术特征摘要】
1.一种内存泄露检测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述在检测到当前进程内存报错的情况下,调用不属于所述当前进程的代理函数包括:
3.根据权利要求2所述的方法,其特征在于,所述在检测到当前进程内存报错的情况下,调用不属于所述当前进程的代理函数之前,所述方法还包括:
4.根据权利要求1所述的方法,其特征在于,所述通过所述代理函数保存所述当前进程对应的内存状态快照,包括:
5.根据权利要求4所述的方法,其特征在于,所述通过所述代理函数重新分配所述当前进程的内存,包括:
6.根据权利要求4所述的方法,其特征在于,...
【专利技术属性】
技术研发人员:陈海亮,高天宝,
申请(专利权)人:深圳依时货拉拉科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。