泄露对象的检测方法、装置、计算设备和计算机存储介质与流程

文档序号:33744573发布日期:2023-04-06 11:05阅读:30来源:国知局
泄露对象的检测方法、装置、计算设备和计算机存储介质与流程

本申请实施例涉及计算机,尤其涉及一种泄露对象的检测方法、装置、计算设备和计算机存储介质。


背景技术:

1、当全局引用对象或者弱全局引用对象一直没有释放或者创建个数大于释放个数,使得引用对象数量超过一定阀值时就会输出一些引用对象的信息,并且之后该进程就可能由于再次申请全局引用或者弱全局引用失败而导致进程崩溃,崩溃时会输出对应的堆栈信息,而此时的堆栈信息可能不是发生引用对象泄露的代码段,而是其他没有泄露的引用对象的代码段。

2、目前对于引用对象泄露的监控方法,通常是对输出一些的引用对象的信息进行推测和后续的复现验证(也就是说只能在引用对象大于引用最大值后,才能去定位泄露对象的代码段,并不能引用对象小于引用最大值之前,提前确定泄露对象的代码段),由于对象名有的比较有针对性,可以比较容易的锁定泄露的代码段,但是有的对象名比较特殊比较大众化,调用之处比较多,需要花费人力复现逐步定位问题,甚至有的问题由于不好复现而长时间得不到解决。


技术实现思路

1、本申请实施例提供一种泄露对象的检测方法、装置、计算设备和计算机存储介质,能够提前收集泄露对象的调用栈信息,直接锁定泄露对象的代码段,提高泄露对象的检测效率。

2、第一方面,本申请实施例提供了一种泄露对象的检测方法,包括:

3、接收引用对象添加请求,所述引用对象添加请求中携带待引用对象;

4、若判断出所述待引用对象的对象类名与溢出对象的对象类名相同,将所述待引用对象确定为泄露对象,输出所述泄露对象的调用栈信息,以通过所述调用栈信息查询出所述溢出对象对应的代码段。

5、可选地,若判断出所述待引用对象的对象类名与溢出对象的对象类名不相同,响应所述引用对象添加请求,添加所述待引用对象为引用对象。

6、可选地,在所述判断所述待引用对象的对象类名与溢出对象的对象类名是否相同之前,还包括:

7、从引用对象列表中,确定引用对象个数;

8、若所述引用对象个数大于第一预设个数,则判断所述引用对象个数是否为非首次大于第一预设个数;

9、若所述引用对象个数小于或等于第一预设个数,则响应所述引用对象添加请求,添加所述待引用对象为引用对象。

10、可选地,在所述判断所述引用对象个数是否为非首次大于第一预设个数之后,还包括:

11、若所述引用对象个数为已首次大于第一预设个数,判断所述引用对象个数是否大于第二预设个数;

12、若所述引用对象个数为非首次大于第一预设个数,将所述引用对象个数设置为已首次大于第一预设个数,并按照对象类名对所述引用对象列表中全部的引用对象进行排序,并将引用次数最多的对象确定为溢出对象。

13、可选地,在所述判断所述引用对象个数是否大于第二预设个数之后,还包括:

14、若所述引用对象个数大于第二预设个数,判断所述待引用对象的对象类名与溢出对象的对象类名是否相同;

15、若所述引用对象个数小于第二预设个数,响应所述引用对象添加请求,添加所述待引用对象为引用对象。

16、可选地,所述输出所述泄露对象的调用栈信息,可包括:

17、输出多次所述泄露对象的调用栈信息。

18、可选地,还包括:

19、当所述引用对象个数等于引用最大值时,打印对象信息,所述对象信息包括引用对象名称、引用对象的对象类名以及所述引用对象的引用次数。

20、第二方面,本申请实施例提供了一种泄露对象的检测装置,包括:

21、接收模块,用于接收引用对象添加请求,所述引用对象添加请求中携带待引用对象;

22、输出模块,用于若判断出所述待引用对象的对象类名与溢出对象的对象类名相同,将所述待引用对象确定为泄露对象,输出所述泄露对象的调用栈信息,以通过所述调用栈信息查询出所述溢出对象对应的代码段。

23、第三方面,本申请实施例提供了一种计算设备,包括处理组件以及存储组件;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,实现如第一方面所述的泄露对象的检测方法。

24、第四方面,本申请实施例提供了一种计算机存储介质,存储有计算机程序,所述计算程序被计算机执行时,实现如第一方面所述的泄露对象的检测方法。

25、本申请实施例提供的方法中,接收引用对象添加请求,所述引用对象添加请求中携带待引用对象;若判断出所述待引用对象的对象类名与溢出对象的对象类名相同,将所述待引用对象确定为泄露对象,输出所述泄露对象的调用栈信息,以通过所述调用栈信息查询出所述溢出对象对应的代码段,能够泄露对象的调用栈信息,直接锁定泄露对象的代码段,提高泄露对象的检测效率。

26、进一步地,本申请通过在引用对象个数大于第一预设个数且小于引用最大值时,并根据引用对象个数的排序结果提前确定出溢出对象,从而能够在接收到待引用对象后,提前判断待引用对象是否是溢出对象,相当于现有技术的泄露对象的检测方式(只能够在引用对象个数达到引用最大值时,根据输出的对象信息进行定位),本申请的方案能够提前确定泄露对象,并通过判断待引用对象的对象类名与溢出对象的对象类名是否相同的方式,确定每一个待引用对象是否是泄露对象,如果是,则输出调用栈信息,通过调用栈信息锁定泄露对象的代码段,从而不仅相对于现有技术方案提前锁定了泄露对象的代码段,还能够提高泄露对象的检测效率。

27、此外,本申请通过多次输出调用栈信息,保证了泄露对象的调用栈信息的准确性,又避免了因为每次检测到泄露对象均输出调用栈信息,造成系统负荷的问题。

28、本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。



技术特征:

1.一种泄露对象的检测方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,还包括:若判断出所述待引用对象的对象类名与溢出对象的对象类名不相同,添加所述待引用对象为引用对象。

3.根据权利要求1所述的方法,其特征在于,在所述判断所述待引用对象的对象类名与溢出对象的对象类名是否相同之前,还包括:

4.根据权利要求3所述的方法,其特征在于,在所述判断所述引用对象个数是否为非首次大于第一预设个数之后,还包括:

5.根据权利要求4所述的方法,其特征在于,在所述判断所述引用对象个数是否大于第二预设个数之后,还包括:

6.根据权利要求1-5任一项所述的方法,其特征在于,所述输出所述泄露对象的调用栈信息,可包括:

7.根据权利要求1所述的方法,其特征在于,还包括:

8.一种泄露对象的检测装置,其特征在于,包括:

9.一种计算设备,其特征在于,包括处理组件以及存储组件;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,实现如权利要求1-7任一项所述的泄露对象的检测方法。

10.一种计算机存储介质,其特征在于,存储有计算机程序,所述计算程序被计算机执行时,实现如权利要求1-7任一项所述的泄露对象的检测方法。


技术总结
本申请实施例提供了一种泄露对象的检测方法、装置、计算设备和计算机存储介质。其中,接收引用对象添加请求,所述引用对象添加请求中携带待引用对象;若判断出所述待引用对象的对象类名与溢出对象的对象类名相同,将所述待引用对象确定为泄露对象,输出所述泄露对象的调用栈信息,以通过所述调用栈信息查询出所述溢出对象对应的代码段。本实施例中,能够提前收集泄露对象的调用栈信息,直接锁定泄露对象的代码段,提高泄露对象的检测效率。

技术研发人员:孔川
受保护的技术使用者:北京车和家信息技术有限公司
技术研发日:
技术公布日:2024/1/12
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1