泄露对象的检测方法、装置、计算设备和计算机存储介质制造方法及图纸

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

【技术实现步骤摘要】
泄露对象的检测方法、装置、计算设备和计算机存储介质


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

技术介绍

[0002]当全局引用对象或者弱全局引用对象一直没有释放或者创建个数大于释放个数,使得引用对象数量超过一定阀值时就会输出一些引用对象的信息,并且之后该进程就可能由于再次申请全局引用或者弱全局引用失败而导致进程崩溃,崩溃时会输出对应的堆栈信息,而此时的堆栈信息可能不是发生引用对象泄露的代码段,而是其他没有泄露的引用对象的代码段。
[0003]目前对于引用对象泄露的监控方法,通常是对输出一些的引用对象的信息进行推测和后续的复现验证(也就是说只能在引用对象大于引用最大值后,才能去定位泄露对象的代码段,并不能引用对象小于引用最大值之前,提前确定泄露对象的代码段),由于对象名有的比较有针对性,可以比较容易的锁定泄露的代码段,但是有的对象名比较特殊比较大众化,调用之处比较多,需要花费人力复现逐步定位问题,甚至有的问题由于不好复现而长时间得不到解决。

技术实现思路

[0004]本申请实施例提供一种泄露对象的检测方法、装置、计算设备和计算机存储介质,能够提前收集泄露对象的调用栈信息,直接锁定泄露对象的代码段,提高泄露对象的检测效率。
[0005]第一方面,本申请实施例提供了一种泄露对象的检测方法,包括:
[0006]接收引用对象添加请求,所述引用对象添加请求中携带待引用对象;
[0007]若判断出所述待引用对象的对象类名与溢出对象的对象类名相同,将所述待引用对象确定为泄露对象,输出所述泄露对象的调用栈信息,以通过所述调用栈信息查询出所述溢出对象对应的代码段。
[0008]可选地,若判断出所述待引用对象的对象类名与溢出对象的对象类名不相同,响应所述引用对象添加请求,添加所述待引用对象为引用对象。
[0009]可选地,在所述判断所述待引用对象的对象类名与溢出对象的对象类名是否相同之前,还包括:
[0010]从引用对象列表中,确定引用对象个数;
[0011]若所述引用对象个数大于第一预设个数,则判断所述引用对象个数是否为非首次大于第一预设个数;
[0012]若所述引用对象个数小于或等于第一预设个数,则响应所述引用对象添加请求,添加所述待引用对象为引用对象。
[0013]可选地,在所述判断所述引用对象个数是否为非首次大于第一预设个数之后,还
包括:
[0014]若所述引用对象个数为已首次大于第一预设个数,判断所述引用对象个数是否大于第二预设个数;
[0015]若所述引用对象个数为非首次大于第一预设个数,将所述引用对象个数设置为已首次大于第一预设个数,并按照对象类名对所述引用对象列表中全部的引用对象进行排序,并将引用次数最多的对象确定为溢出对象。
[0016]可选地,在所述判断所述引用对象个数是否大于第二预设个数之后,还包括:
[0017]若所述引用对象个数大于第二预设个数,判断所述待引用对象的对象类名与溢出对象的对象类名是否相同;
[0018]若所述引用对象个数小于第二预设个数,响应所述引用对象添加请求,添加所述待引用对象为引用对象。
[0019]可选地,所述输出所述泄露对象的调用栈信息,可包括:
[0020]输出多次所述泄露对象的调用栈信息。
[0021]可选地,还包括:
[0022]当所述引用对象个数等于引用最大值时,打印对象信息,所述对象信息包括引用对象名称、引用对象的对象类名以及所述引用对象的引用次数。
[0023]第二方面,本申请实施例提供了一种泄露对象的检测装置,包括:
[0024]接收模块,用于接收引用对象添加请求,所述引用对象添加请求中携带待引用对象;
[0025]输出模块,用于若判断出所述待引用对象的对象类名与溢出对象的对象类名相同,将所述待引用对象确定为泄露对象,输出所述泄露对象的调用栈信息,以通过所述调用栈信息查询出所述溢出对象对应的代码段。
[0026]第三方面,本申请实施例提供了一种计算设备,包括处理组件以及存储组件;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,实现如第一方面所述的泄露对象的检测方法。
[0027]第四方面,本申请实施例提供了一种计算机存储介质,存储有计算机程序,所述计算程序被计算机执行时,实现如第一方面所述的泄露对象的检测方法。
[0028]本申请实施例提供的方法中,接收引用对象添加请求,所述引用对象添加请求中携带待引用对象;若判断出所述待引用对象的对象类名与溢出对象的对象类名相同,将所述待引用对象确定为泄露对象,输出所述泄露对象的调用栈信息,以通过所述调用栈信息查询出所述溢出对象对应的代码段,能够泄露对象的调用栈信息,直接锁定泄露对象的代码段,提高泄露对象的检测效率。
[0029]进一步地,本申请通过在引用对象个数大于第一预设个数且小于引用最大值时,并根据引用对象个数的排序结果提前确定出溢出对象,从而能够在接收到待引用对象后,提前判断待引用对象是否是溢出对象,相当于现有技术的泄露对象的检测方式(只能够在引用对象个数达到引用最大值时,根据输出的对象信息进行定位),本申请的方案能够提前确定泄露对象,并通过判断待引用对象的对象类名与溢出对象的对象类名是否相同的方式,确定每一个待引用对象是否是泄露对象,如果是,则输出调用栈信息,通过调用栈信息锁定泄露对象的代码段,从而不仅相对于现有技术方案提前锁定了泄露对象的代码段,还
能够提高泄露对象的检测效率。
[0030]此外,本申请通过多次输出调用栈信息,保证了泄露对象的调用栈信息的准确性,又避免了因为每次检测到泄露对象均输出调用栈信息,造成系统负荷的问题。
[0031]本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
[0032]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0033]图1为本申请实施例提供的一种泄露对象的检测方法的流程图;
[0034]图2为本申请实施例提供的另一种泄露对象的检测方法的流程图;
[0035]图3为本申请实施例提供的一种泄露对象的检测装置的结构示意图;
[0036]图4为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
[0037]为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
[0038]在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种泄露对象的检测方法,其特征在于,包括:接收引用对象添加请求,所述引用对象添加请求中携带待引用对象;若判断出所述待引用对象的对象类名与溢出对象的对象类名相同,将所述待引用对象确定为泄露对象,输出所述泄露对象的调用栈信息,以通过所述调用栈信息查询出所述溢出对象对应的代码段。2.根据权利要求1所述的方法,其特征在于,还包括:若判断出所述待引用对象的对象类名与溢出对象的对象类名不相同,添加所述待引用对象为引用对象。3.根据权利要求1所述的方法,其特征在于,在所述判断所述待引用对象的对象类名与溢出对象的对象类名是否相同之前,还包括:从引用对象列表中,确定引用对象个数;若所述引用对象个数大于第一预设个数,则判断所述引用对象个数是否为非首次大于第一预设个数;若所述引用对象个数小于或等于第一预设个数,则响应所述引用对象添加请求,添加所述待引用对象为引用对象。4.根据权利要求3所述的方法,其特征在于,在所述判断所述引用对象个数是否为非首次大于第一预设个数之后,还包括:若所述引用对象个数为已首次大于第一预设个数,判断所述引用对象个数是否大于第二预设个数;若所述引用对象个数为非首次大于第一预设个数,将所述引用对象个数设置为已首次大于第一预设个数,并按照对象类名对所述引用对象列表中全部的引用对象进行排序,并将引用次数最多的对象确定为溢出对象。5.根据权利要求4所述的方法,其特征在于,在所述判断所述引用对象个数是否大于第二预设个数之后,还包括...

【专利技术属性】
技术研发人员:孔川
申请(专利权)人:北京车和家信息技术有限公司
类型:发明
国别省市:

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

1