检测内存泄露方法、装置、可读介质及电子设备制造方法及图纸

技术编号:33631528 阅读:19 留言:0更新日期:2022-06-02 01:36
本公开涉及一种检测内存泄露方法、装置、可读介质及电子设备。方法包括:获取与待测应用相关的对象;将对象作为初始的目标对象,并执行以下确定目标对象的强引用对象的步骤:确定目标对象的底层结构类型对象,并根据底层结构类型对象的属性信息,确定目标对象的强引用对象;将强引用对象确定为新的目标对象,并循环执行确定所述目标对象的强引用对象的步骤,直至满足预设的循环终止条件;根据每一目标对象和每一目标对象的强引用对象,确定待测应用是否存在内存泄露。如此,利用目标对象的底层结构类型对象,实现对Swift语言的内存泄露检测,进而提高了对终端的内存泄露检测的全面性,避免系统内存浪费,提高系统内存的使用率。提高系统内存的使用率。提高系统内存的使用率。

【技术实现步骤摘要】
检测内存泄露方法、装置、可读介质及电子设备


[0001]本公开涉及计算机
,具体地,涉及一种检测内存泄露方法、装 置、可读介质及电子设备。

技术介绍

[0002]内存泄露是指程序中已分配的堆内存由于某些原因未释放造成系统内 存的浪费。其中,内存泄露多是由于多个对象循环引用导致的,虽然存在 ARC(Automatic Reference Counting,自动引用计数)内存管理机制。但多 个对象之间进行相互引用依然会造成内存循环引用,进而导致内存泄漏。例 如,对象a强引用对象b,对象b强引用对象c,对象c强引用对象b,如此, 对象b和对象c的引用计数分别是2和1。当对象a不再引用对象b时,会 调用release函数释放对对象b的所有权,因为对象c还强引用了对象b,所 以对象b的引用计数变为1,即对象b不会被释放。由于对象b不释放,对 象c的引用计数就是1,因此对象c也不会被释放。这样,对象b和对象c 将一直占据内存,引起内存泄漏。
[0003]目前,Swift语言、Objective

C语言均采用ARC内存管理机本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种检测内存泄露方法,其特征在于,包括:获取与待测应用相关的对象;将所述对象作为初始的目标对象,并执行以下确定所述目标对象的强引用对象的步骤:确定所述目标对象的底层结构类型对象,并根据所述底层结构类型对象的属性信息,确定所述目标对象的强引用对象;将所述强引用对象确定为新的目标对象,并循环执行所述确定所述目标对象的强引用对象的步骤,直至满足预设的循环终止条件;根据每一所述目标对象和每一所述目标对象的强引用对象,确定所述待测应用是否存在内存泄露。2.根据权利要求1所述的方法,其特征在于,所述底层结构类型对象的属性信息包括所述目标对象的强引用对象的信息、弱引用对象的信息和无主引用对象的信息;所述根据所述底层结构类型对象的属性信息,确定所述目标对象的强引用对象,包括:根据所述属性信息包括的强引用对象的信息、弱引用对象的信息和无主引用对象的信息,去除所述弱引用对象和所述无主引用对象,以得到所述目标对象的强引用对象。3.根据权利要求1所述的方法,其特征在于,所述确定所述目标对象的底层结构类型对象,包括:确定所述目标对象的预设底层结构类型的指针,其中,所述预设底层结构类型为每一所述目标对象的底层结构均具有的父类结构类型;根据所述预设底层结构类型的指针,访问所述预设底层结构类型对象,得到所述目标对象的类;根据所述目标对象的类,对所述预设底层结构类型的指针进行指针类型强转,以得到所述目标对象的底层结构类型的指针;根据所述底层结构类型的指针,确定所述目标对象的底层结构类型对象。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据所述目标对象的类,确定所述类是否存在继承关系;若存在所述继承关系,则确定所述目标对象的父类对象,并将所述父类对象确定为目标对象。5.根据权利要求1所述的方法,其特征在于,所述获取与待测应用相关的对象,包括:在待测应用处于待关闭状态时,确定与所述待测应用相关的...

【专利技术属性】
技术研发人员:郎明朗
申请(专利权)人:北京字节跳动网络技术有限公司
类型:发明
国别省市:

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

1