资源对象泄漏检测方法及装置制造方法及图纸

技术编号:20545550 阅读:24 留言:0更新日期:2019-03-09 18:29
本发明专利技术实施例提供的一种资源对象泄漏检测方法及装置,所述方法包括:对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息,若所述元数据信息中的状态信息为未关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据位置信息确定泄漏的资源对象,实现通过弱引用对象找到未回收成功的资源对象,做到资源泄漏检测精准。

Detection Method and Device for Leakage of Resource Objects

The embodiment of the present invention provides a resource object leak detection method and device. The method includes scanning the weak reference object queue, determining the target weak reference object, parsing the target weak reference object and obtaining corresponding metadata information. If the status information in the metadata information is not closed, the corresponding metadata information is determined according to the metadata information. The location information of the target resource object determines the leaked resource object according to the location information, realizes finding the unsuccessful resource object through the weak reference object, and achieves the accurate detection of resource leak.

【技术实现步骤摘要】
资源对象泄漏检测方法及装置
本专利技术涉及数据业务
,尤其涉及一种资源对象泄漏检测方法及装置。
技术介绍
在众多业务系统中,经常发生因资源对象(如数据库连接对象)未关闭导致业务系统反应慢甚至宕机的问题。故障一旦发生,定位极为复杂,严重影响生产系统的稳定运行。Java技术在众多web业务系统中扮演着举足轻重的角色,如何快速在Java虚拟机中定位资源泄漏对象的位置,成为一项极具富有挑战性的问题。该问题的难点在于,如何判断资源对象在垃圾回收后,该资源对象是否关闭,即资源对象在回收后,如何判断该对象有没有执行过close方法。在Java虚拟机中对象被回收后,该对象已经不存在,有没有执行过close方法,更是无从得知。
技术实现思路
本专利技术提供一种资源对象泄漏检测方法及装置,用于解决现有技术中无法在资源对象被回收不存在情况下进行泄漏检测的问题。第一方面,本专利技术提供一种资源对象泄漏检测方法,包括:对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息;若所述元数据信息中的状态信息为未关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定泄漏的资源对象。可选地,对所述目标弱引用对象进行解析获得对应的元数据信息,包括:对所述目标弱引用对象进行解析获得对应的成员变量,根据所述成员变量获得对应的元数据信息。可选地,所述目标弱引用对象为所述目标资源对象创建时所创建。可选地,所述元数据信息中的状态信息为所述目标资源对象在被执行关闭操作后更新后的状态信息。可选地,若所述元数据信息中的状态信息为关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定已回收的资源对象。第二方面,本专利技术实施例提供一种资源对象泄漏检测装置,包括:扫描模块,用于对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息;检测模块,用于当所述元数据信息中的状态信息为未关闭状态时,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定泄漏的资源对象。可选地,所述扫描模块具体用于:对所述目标弱引用对象进行解析获得对应的成员变量,根据所述成员变量获得对应的元数据信息。可选地,所述目标弱引用对象为所述目标资源对象创建时所创建。可选地,所述元数据信息中的状态信息为所述目标资源对象在被执行关闭操作后更新后的状态信息。可选地,所述检测模块还用于:在所述元数据信息中的状态信息为关闭状态时,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定已回收的资源对象。由上述技术方案可知,本专利技术实施例提供的一种资源对象泄漏检测方法及装置,通过对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息,若所述元数据信息中的状态信息为未关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据位置信息确定泄漏的资源对象,实现通过弱引用对象找到未回收成功的资源对象,做到资源泄漏检测精准。附图说明图1为本专利技术一实施例提供的资源对象泄漏检测方法的流程示意图;图2为本专利技术一实施例提供的资源对象泄漏检测装置的结构示意图。具体实施方式下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。图1示出了本专利技术一实施例提供的一种资源对象泄漏检测方法,包括:S11、对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息;S12、若所述元数据信息中的状态信息为未关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定泄漏的资源对象。针对步骤S11和步骤S12,需要说明的是,在本专利技术实施例中,所述目标弱引用对象为所述目标资源对象创建时所创建。在创建资源对象时,会初始化对应的元数据信息(保存资源创建时的堆栈位置信息和是否关闭的状态信息),故元数据信息包括状态信息和位置信息。同时还会创建资源对象对应的弱引用对象,其中元数据信息作为弱引用对象的一个成员变量。最后,将所有弱引用对象存在资源管理器下的弱引用对象阵列中。由于弱引用对象的存在,所以资源对象的生命周期不受影响,在资源对象被GC回收后,可通过关联的弱引用对象中的元数据信息找到未回收成功的资源对象的位置信息,从而找到泄露的资源对象。上述资源对象在初始状态下,元数据信息中的状态信息为false,即未关闭状态。当资源对象被执行close操作后,会触发注入代码的执行逻辑,通过资源对象能够找到元数据信息,从而改变元数据信息中的状态信息为true,即关闭状态。此时,资源对象对应的弱引用对象对应的元数据信息也会更新状态信息为关闭状态。在资源管理器中有个线程池,会定期对弱引用对象队列中的每个弱引用对象进行扫描,确定目标弱引用对象。在这里,当扫描到哪个弱引用对象,说明弱引用对象关联的资源对象已经被GC回收。对所述目标弱引用对象进行解析获得对应的成员变量,根据所述成员变量获得对应的元数据信息。若所述元数据信息中的状态信息为关闭状态,则根据所述元数据信息获得对应的目标资源对象的位置信息,根据位置信息确定已回收的资源对象。本专利技术实施例提供的一种资源对象泄漏检测方法,通过对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息,若所述元数据信息中的状态信息为未关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据位置信息确定泄漏的资源对象,实现通过弱引用对象找到未回收成功的资源对象,做到资源泄漏检测精准。图2示出了本专利技术一实施例提供的一种资源对象泄漏检测装置,包括扫描模块21和检测模块22,其中:扫描模块21,用于对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息;检测模块22,用于当所述元数据信息中的状态信息为未关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定泄漏的资源对象。由于本专利技术实施例所述装置与上述实施例所述方法的原理相同,对于更加详细的解释内容在此不再赘述。需要说明的是,本专利技术实施例中可以通过硬件处理器(hardwareprocessor)来实现相关功能模块。本专利技术实施例提供的一种资源对象泄漏检测装置,通过对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息,若所述元数据信息中的状态信息为未关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据位置信息确定泄漏的资源对象,实现通过弱引用对象找到未回收成功的资源对象,做到资源泄漏检测精准。此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本专利技术的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。应该注意的是上述实施例对本专利技术进行说明而不是对本专利技术进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中本文档来自技高网...

【技术保护点】
1.一种资源对象泄漏检测方法,其特征在于,包括:对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息;若所述元数据信息中的状态信息为未关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定泄漏的资源对象。

【技术特征摘要】
1.一种资源对象泄漏检测方法,其特征在于,包括:对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息;若所述元数据信息中的状态信息为未关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定泄漏的资源对象。2.根据权利要求1所述的方法,其特征在于,对所述目标弱引用对象进行解析获得对应的元数据信息,包括:对所述目标弱引用对象进行解析获得对应的成员变量,根据所述成员变量获得对应的元数据信息。3.根据权利要求2所述的方法,其特征在于,所述目标弱引用对象为所述目标资源对象创建时所创建。4.根据权利要求1所述的方法,其特征在于,所述元数据信息中的状态信息为所述目标资源对象在被执行关闭操作后更新后的状态信息。5.根据权利要求1所述的方法,其特征在于,还包括:若所述元数据信息中的状态信息为关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定已回收的资源对象。6.一...

【专利技术属性】
技术研发人员:易存道
申请(专利权)人:北京宝兰德软件股份有限公司
类型:发明
国别省市:北京,11

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

1