买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】资源对象泄漏检测方法及装置_北京宝兰德软件股份有限公司_201811232261.0 

申请/专利权人:北京宝兰德软件股份有限公司

申请日:2018-10-22

公开(公告)日:2020-07-03

公开(公告)号:CN109445913B

主分类号:G06F9/46(20060101)

分类号:G06F9/46(20060101)

优先权:

专利状态码:有效-授权

法律状态:2020.07.03#授权;2019.04.02#实质审查的生效;2019.03.08#公开

摘要:本发明实施例提供的一种资源对象泄漏检测方法及装置,所述方法包括:对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息,若所述元数据信息中的状态信息为未关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据位置信息确定泄漏的资源对象,实现通过弱引用对象找到未回收成功的资源对象,做到资源泄漏检测精准。

主权项:1.一种资源对象泄漏检测方法,其特征在于,包括:对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息,其中,所述元数据信息指保存资源创建时的堆栈位置信息和是否关闭的状态信息,所述元数据信息包括状态信息和位置信息;若所述元数据信息中的状态信息为未关闭状态,其中,所述元数据信息中的状态信息包括未关闭状态和关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定泄漏的资源对象,其中,当资源对象被执行关闭操作后,触发注入代码的执行逻辑,通过资源对象找到元数据信息,以改变元数据信息中的状态信息为关闭状态,对应地,资源对象对应的弱引用对象对应的元数据信息更新状态信息为关闭状态。

全文数据:资源对象泄漏检测方法及装置技术领域本发明涉及数据业务技术领域,尤其涉及一种资源对象泄漏检测方法及装置。背景技术在众多业务系统中,经常发生因资源对象如数据库连接对象未关闭导致业务系统反应慢甚至宕机的问题。故障一旦发生,定位极为复杂,严重影响生产系统的稳定运行。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.一种资源对象泄漏检测方法,其特征在于,包括:对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息;若所述元数据信息中的状态信息为未关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定泄漏的资源对象。2.根据权利要求1所述的方法,其特征在于,对所述目标弱引用对象进行解析获得对应的元数据信息,包括:对所述目标弱引用对象进行解析获得对应的成员变量,根据所述成员变量获得对应的元数据信息。3.根据权利要求2所述的方法,其特征在于,所述目标弱引用对象为所述目标资源对象创建时所创建。4.根据权利要求1所述的方法,其特征在于,所述元数据信息中的状态信息为所述目标资源对象在被执行关闭操作后更新后的状态信息。5.根据权利要求1所述的方法,其特征在于,还包括:若所述元数据信息中的状态信息为关闭状态,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定已回收的资源对象。6.一种资源对象泄漏检测装置,其特征在于,包括:扫描模块,用于对弱引用对象队列进行扫描,确定目标弱引用对象,对所述目标弱引用对象进行解析获得对应的元数据信息;检测模块,用于当所述元数据信息中的状态信息为未关闭状态时,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定泄漏的资源对象。7.根据权利要求6所述的装置,其特征在于,所述扫描模块具体用于:对所述目标弱引用对象进行解析获得对应的成员变量,根据所述成员变量获得对应的元数据信息。8.根据权利要求7所述的装置,其特征在于,所述目标弱引用对象为所述目标资源对象创建时所创建。9.根据权利要求6所述的装置,其特征在于,所述元数据信息中的状态信息为所述目标资源对象在被执行关闭操作后更新后的状态信息。10.根据权利要求6所述的装置,其特征在于,所述检测模块还用于:在所述元数据信息中的状态信息为关闭状态时,则根据所述元数据信息确定对应的目标资源对象的位置信息,根据所述位置信息确定已回收的资源对象。

百度查询: 北京宝兰德软件股份有限公司 资源对象泄漏检测方法及装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。