内存泄露检测方法及装置制造方法及图纸

技术编号:36066440 阅读:21 留言:0更新日期:2022-12-24 10:33
本公开的实施例提供一种内存泄露检测方法及装置。该方法包括:响应于对第一应用的第一操作,根据所述第一操作确定所述第一应用中被创建的类,其中,每个被创建的类具有对应的分配内存;根据所述被创建的类,确定对应的分配内存的内存泄露检测结果,所述内存泄露检测结果为存在内存泄露,或者,不存在内存泄露。本公开的实施例的方案,能够实现内存泄露的自动化检测,操作简单。操作简单。操作简单。

【技术实现步骤摘要】
内存泄露检测方法及装置
[0001]本申请要求于2021年6月7日提交中国专利局、申请号为2021106330043、申请名称为“内存泄露检测方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。


[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]在一种可能的实施方式中,在所述被创建的类的内存泄露检测结果为存在内存泄露时,所述方法还包括:
[0034]显示弹窗,所述弹窗上包括所述被创建的类的类名,以及所述被创建的类的引用类。
[0035]第二方面,本公开的实施例提供一种内存泄露检测装置,包括:
[0036]处理模块,用于响应于对第一应用的第一操作,根据所述第一操作确定所述第一应用中被创建的类,其中,每个被创建的类具有对应的分配内存;
[0037]检测模块,用于根据所述被创建的类,确定对应的分配内存的内存泄露检测结果,所述内存泄露检测结果为存在内存泄露,或者,不存在内存泄露。
[0038]在一种可能的实施方式中,所述处理模块具体用于:
[0039]获取待检测的多个类;
[0040]响应于所述第一操作,根据所述第一操作在所述待检测的多个类中确定所述被创建的类。
[0041]在一种可能的实施方式中,所述处理模块具体用于:
[0042]获取脚本代码;
[0043]根据所述脚本代码扫描所述第一应用的源代码,得到所述待检测的多个类。
[0044]在一种可能的实施方式中,所述处理模块具体用于:
[0045]响应于所述第一操作,在所述待检测的多个类中确定所述第一操作对应的至少一个类;
[0046]根据所述至少一个类中每个类的钩子函数,在所述至少一个类中确定已分配内存的类;
[0047]将所述已分配内存的类确定为所述被创建的类。
[0048]在一种可能的实施方式中,所述检测模块具体用于:
[0049]针对任意一个被创建的类,获取所述被创建的类的引用类;
[0050]根据所述被创建的类的引用类,确定对应的内存泄露检测结果。
[0051]在一种可能的实施方式中,所述检测模块具体用于:
[0052]若所述被创建的类未引用任何类,则确定所述被创建的类对应的内存泄露检测结果为不存在内存泄露;
[0053]若所述被创建的类包括至少一个引用类,则根据所述被创建的类和所述至少一个引用类之间的引用关系,确定所述内存泄露检测结果。
[0054]在一种可能的实施方式中,所述检测模块具体用于:
[0055]根据所述被创建的类和所述至少一个引用类之间的引用关系,判断所述被创建的类是否存在循环引用;
[0056]若是,则确定所述被创建的类对应的内存泄露检测结果为存在内存泄露;
[0057]若否,则确定所述被创建的类对应的内存泄露检测结果为不存在内存泄露。
[0058]在一种可能的实施方式中,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存泄露检测方法,其特征在于,包括:响应于对第一应用的第一操作,根据所述第一操作确定所述第一应用中被创建的类,其中,每个被创建的类具有对应的分配内存;根据所述被创建的类,确定对应的分配内存的内存泄露检测结果,所述内存泄露检测结果为存在内存泄露,或者,不存在内存泄露。2.根据权利要求1所述的方法,其特征在于,响应于对第一应用的第一操作,根据所述第一操作确定所述第一应用中被创建的类,包括:获取待检测的多个类;响应于所述第一操作,根据所述第一操作在所述待检测的多个类中确定所述被创建的类。3.根据权利要求2所述的方法,其特征在于,获取待检测的多个类,包括:获取脚本代码;根据所述脚本代码扫描所述第一应用的源代码,得到所述待检测的多个类。4.根据权利要求2或3所述的方法,其特征在于,响应于所述第一操作,根据所述第一操作在所述待检测的多个类中确定所述被创建的类,包括:响应于所述第一操作,在所述待检测的多个类中确定所述第一操作对应的至少一个类;根据所述至少一个类中每个类的钩子函数,在所述至少一个类中确定已分配内存的类;将所述已分配内存的类确定为所述被创建的类。5.根据权利要求1所述的方法,其特征在于,根据所述被创建的类,确定对应的分配内存的内存泄露检测结果,包括:针对任意一个被创建的类,获取所述被创建的类的引用类;根据所述被创建的类的引用类,确定对应的内存泄露检测结果。6.根据权利要求5所述的方法,其特征在于,根据所述被创建的类的引用类,确定对应的内存泄露检测结果,包括:若所述被创建的类未引用任何类,则确定所述被创建的类对应的内存泄露检测结果为不存在内存泄露;若所述被创建的类包括至少一个引用类,则根据所述被创建的类和所述至少一个引用类之间的引用关系,确定所述内存泄露检测结果。7.根据权利要求6所述的方法,其特征在于,根据所述被创建的类和所述至少一个引用类之间的引用关系,确定所述内存泄露检测结果,包括:根据所述被创建的类和所述至少一个引用类之间的引用关系,判断所述被创建的类是否存在循环引用;若是,则确定所述被创建的类对应的内存泄露检测结果为存在内存泄露;若否,则确定所述被创建的类对应的内存泄露检测结果为不存在内存泄露。8.根据权利要求7所述的方法,其特征在于,根据所述被创建的类和所述至少一个引用类之间的引用关系,判断所述被创建的类是否存在循环引用,包括:根据所述引用关系,获取所述被创建的类的引用关系图,其中,所述引用关系图中包括
多个节点和各节点之间的连接关系,其中,每个节点表示所述被创建的类或所述引用类,所述连接关系指示所述被创建的类和所述至少一个引用类之间的引用关系;在所述引用关系图中存在环路时,确定存在循环引用,否则,确定不存在循环引用。9.根据权利要求5

8任一项所述的方法,其特征在于,在所述被创建的类的内存泄露检测结果为存在内存泄露时,所述方法还包括:显示弹窗,所述弹窗上包括所述被创建的类的类名,以及所述被创建的类的引用类。10.一种内存泄露检测装置,其特征在于,包括:处理模块,用于响应于对第一应用的第一操作,根据所述第一操作确定所述第一应用中被创建的...

【专利技术属性】
技术研发人员:彭碧
申请(专利权)人:北京嘀嘀无限科技发展有限公司
类型:发明
国别省市:

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

1