内存泄漏检测方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:30101224 阅读:23 留言:0更新日期:2021-09-18 09:06
本申请涉及一种内存泄漏检测方法、装置、计算机设备和存储介质。所述方法包括:在应用程序运行过程中,监测应用程序中各目标监测对象的业务逻辑状态以及弱引用状态,弱引用状态用于指示是否存在弱引用,弱引用表示不能确保其引用的对象不会被垃圾回收器回收的引用;根据各目标监测对象的业务逻辑状态以及弱引用状态,从各目标监测对象中确定可疑对象;根据各可疑对象的强引用状态,从各可疑对象中确定泄漏对象,强引用状态用于指示是否存在强应用,强引用表示能确保其引用的对象不会被垃圾回收器回收的引用。采用本方法能够提高内存泄漏检测的准确性和效率。漏检测的准确性和效率。漏检测的准确性和效率。

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


[0001]本申请涉及计算机
,特别是涉及一种内存泄漏检测方法、装置、计算机设备和存储介质。

技术介绍

[0002]随着计算机应用需求的日益增加,应用程序的设计与开发也相应地日趋复杂。内存泄漏是影响应用性能的一个重要因素,在应用程序运行过程中,如果无用的对象没有被及时释放,导致无法回收,就有可能出现内存泄漏的情况。如果发生内存泄漏,会增加内存占用,严重时可能会导致应用崩溃等后果。因此有必要对内存泄漏进行检测以便修复问题代码。
[0003]传统技术中,内存泄漏检查工具通过统计对象分配的方式,将应用程序运行时的统计结果(例如内存中对象的数量及内存占用量)作为辅助信息,交由开发人员分析是否发生了内存泄漏以及可能的泄漏点,如果某一个类对应的实例数量比较多或者内存占用量比较大,超过了业务场景下的合理范围,那么开发人员有理由怀疑操作该类对象的代码存在内存泄漏问题。
[0004]然而,程序代码往往存在着大量的逻辑分支,但在程序实际运行过程中,可能只有一部分逻辑分支被高频执行,而其余的逻辑分支只是被低频执行,如果导致内存泄漏的代码存在于低频执行的逻辑分支中,那么泄漏的对象在数量、内存占用量上将会比较少,而较少的内存泄露难以从传统内存泄漏检查工具的统计结果中被发现,从而影响内存泄露检测的准确性和效率,给需要长时间运行的程序的稳定性造成隐患。

技术实现思路

[0005]基于此,有必要针对上述技术问题,提供一种能够提高准确性和效率的内存泄漏检测方法、装置、计算机设备和存储介质。
[0006]一种内存泄漏检测方法,所述方法包括:
[0007]在应用程序运行过程中,监测所述应用程序中各目标监测对象的业务逻辑状态以及弱引用状态,所述弱引用状态用于指示是否存在弱引用,所述弱引用表示不能确保其引用的对象不会被垃圾回收器回收的引用;
[0008]根据各所述目标监测对象的业务逻辑状态以及弱引用状态,从各所述目标监测对象中确定可疑对象;
[0009]根据各所述可疑对象的强引用状态,从各所述可疑对象中确定泄漏对象,所述强引用状态用于指示是否存在强应用,所述强引用表示能确保其引用的对象不会被垃圾回收器回收的引用。
[0010]一种内存泄漏检测装置,所述装置包括:
[0011]监测模块,用于在应用程序运行过程中,监测所述应用程序中各目标监测对象的业务逻辑状态以及弱引用状态,所述弱引用状态用于指示是否存在弱引用,所述弱引用表
示不能确保其引用的对象不会被垃圾回收器回收的引用;
[0012]可疑对象确定模块,用于根据各所述目标监测对象的业务逻辑状态以及弱引用状态,从各所述目标监测对象中确定可疑对象;
[0013]泄漏对象确定模块,用于根据各所述可疑对象的强引用状态,从各所述可疑对象中确定泄漏对象,所述强引用状态用于指示是否存在强应用,所述强引用表示能确保其引用的对象不会被垃圾回收器回收的引用。
[0014]一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0015]在应用程序运行过程中,监测所述应用程序中各目标监测对象的业务逻辑状态以及弱引用状态,所述弱引用状态用于指示是否存在弱引用,所述弱引用表示不能确保其引用的对象不会被垃圾回收器回收的引用;
[0016]根据各所述目标监测对象的业务逻辑状态以及弱引用状态,从各所述目标监测对象中确定可疑对象;
[0017]根据各所述可疑对象的强引用状态,从各所述可疑对象中确定泄漏对象,所述强引用状态用于指示是否存在强应用,所述强引用表示能确保其引用的对象不会被垃圾回收器回收的引用。
[0018]一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0019]在应用程序运行过程中,监测所述应用程序中各目标监测对象的业务逻辑状态以及弱引用状态,所述弱引用状态用于指示是否存在弱引用,所述弱引用表示不能确保其引用的对象不会被垃圾回收器回收的引用;
[0020]根据各所述目标监测对象的业务逻辑状态以及弱引用状态,从各所述目标监测对象中确定可疑对象;
[0021]根据各所述可疑对象的强引用状态,从各所述可疑对象中确定泄漏对象,所述强引用状态用于指示是否存在强应用,所述强引用表示能确保其引用的对象不会被垃圾回收器回收的引用。
[0022]上述内存泄漏检测方法、装置、计算机设备和存储介质,在应用程序运行过程中,监测应用程序中各目标监测对象的业务逻辑状态以及弱引用状态,弱引用状态用于指示是否存在弱引用,弱引用表示不能确保其引用的对象不会被垃圾回收器回收的引用;根据各目标监测对象的业务逻辑状态以及弱引用状态,从各目标监测对象中确定可疑对象;根据各可疑对象的强引用状态,从各可疑对象中确定泄漏对象,强引用状态用于指示是否存在强应用,强引用表示能确保其引用的对象不会被垃圾回收器回收的引用。据此,基于目标监测对象的业务逻辑状态、弱引用状态以及强引用状态来检测是否存在内存泄漏,检测结果不依赖泄漏对象的数量及内存占用量,即使泄漏对象的数量和内存占用量小,也能够被检测到,从而提高检测准确性。此外,上述内存泄漏检测方法可以通过代码形式嵌入到应用程序内部,无需人工介入就能够在应用程序运行过程中以较少的性能开销实时地监测内存使用情况,提高检测效率,有利于快速发现并修复内存泄漏问题。
附图说明
[0023]图1为一个实施例中内存泄漏检测方法的应用环境图;
[0024]图2为一个实施例中内存泄漏检测方法的流程示意图;
[0025]图3为一个实施例中对象注册的流程示意图;
[0026]图4为一个实施例中内存泄漏检测方法的流程示意图;
[0027]图5为一个实施例中检测到泄露对象后的处理步骤的流程示意图;
[0028]图6为一个实施例中内存泄漏检测方法的流程示意图;
[0029]图7为一个实施例中内存泄漏检测装置的结构框图;
[0030]图8为一个实施例中计算机设备的内部结构图;
[0031]图9为一个实施例中计算机设备的内部结构图。
具体实施方式
[0032]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0033]本申请提供的内存泄漏检测方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。用户可以通过终端102运行应用程序,服务器104可以是该应用程序所在的服务器。内存泄漏检测方法可以应用于安装有应用程序的终端,也可以应用于该应用程序所在的服务器,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存泄漏检测方法,其特征在于,所述方法包括:在应用程序运行过程中,监测所述应用程序中各目标监测对象的业务逻辑状态以及弱引用状态,所述弱引用状态用于指示是否存在弱引用,所述弱引用表示不能确保其引用的对象不会被垃圾回收器回收的引用;根据各所述目标监测对象的业务逻辑状态以及弱引用状态,从各所述目标监测对象中确定可疑对象;根据各可疑对象的强引用状态,从各所述可疑对象中确定泄漏对象,所述强引用状态用于指示是否存在强应用,所述强引用表示能确保其引用的对象不会被垃圾回收器回收的引用。2.根据权利要求1所述的方法,其特征在于,所述监测所述应用程序中各目标监测对象的业务逻辑状态以及弱引用状态,包括:调用业务逻辑检查接口,监测所述应用程序中各目标监测对象的业务逻辑状态;借助弱引用机制,监测所述应用程序中各目标监测对象的弱引用状态。3.根据权利要求2所述的方法,其特征在于,所述根据各所述目标监测对象的业务逻辑状态以及弱引用状态,从各所述目标监测对象中确定可疑对象,包括:将业务逻辑状态为业务逻辑失效且弱引用状态为弱引用有效的目标监测对象,确定为可疑对象。4.根据权利要求1所述的方法,其特征在于,在所述根据各可疑对象的强引用状态,从各所述可疑对象中确定泄漏对象之前,还包括:获取各所述可疑对象引用的根对象;从各所述可疑对象引用的根对象开始,对内存中指向各所述可疑对象的引用进行扫描,获得各所述可疑对象的强引用状态。5.根据权利要求4所述的方法,其特...

【专利技术属性】
技术研发人员:魏浩洋叶峥铖
申请(专利权)人:腾讯数码深圳有限公司
类型:发明
国别省市:

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

1