预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共20页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN114296986A(43)申请公布日2022.04.08(21)申请号202111665183.5(22)申请日2021.12.31(71)申请人北京字节跳动网络技术有限公司地址100041北京市石景山区实兴大街30号院3号楼2层B-0035房间(72)发明人黄柳优(74)专利代理机构北京英创嘉友知识产权代理事务所(普通合伙)11447代理人魏嘉熹(51)Int.Cl.G06F11/07(2006.01)权利要求书2页说明书14页附图3页(54)发明名称内存泄漏定位方法、装置、介质和电子设备(57)摘要本公开涉及一种内存泄漏定位方法、装置、介质和电子设备,所述方法包括:将目标应用程序运行过程中的执行函数对应的运行数据存储至缓存中,执行函数为目标应用程序运行过程中执行到的函数,运行数据包括所述执行函数对应的回溯信息和执行栈数据;根据所述执行函数对应的内存信息确定是否存在内存泄漏,并在确定存在内存泄漏的情况下确定待回溯的目标函数;根据所述目标函数对应的运行数据进行回溯,确定所述目标函数中发生内存泄漏的代码行。由此,无需多次频繁的访问内存中的数据,从而有效降低进行I/O操作的次数,避免对内存性能的影响,提升内存泄漏定位方法的效率和准确性,并且能够实现对内存泄漏进行精准分析定位,提升用户使用体验。CN114296986ACN114296986A权利要求书1/2页1.一种内存泄漏定位方法,其特征在于,所述方法包括:将目标应用程序运行过程中的执行函数对应的运行数据存储至缓存中,其中,所述执行函数为所述目标应用程序运行过程中执行到的函数,所述运行数据包括所述执行函数对应的回溯信息和执行栈数据;根据所述执行函数对应的内存信息确定是否存在内存泄漏,并在确定存在内存泄漏的情况下确定待回溯的目标函数;根据所述目标函数对应的运行数据进行回溯,确定所述目标函数中发生内存泄漏的代码行。2.根据权利要求1所述的方法,其特征在于,所述将目标应用程序运行过程中的执行函数对应的运行数据存储至缓存中,包括:将所述执行函数执行过程中的回溯信息存储在所述缓存中;对所述执行函数执行过程中的执行栈数据在所述缓存中进行备份,获得备份栈数据;根据所述执行栈数据的存储地址对所述备份栈数据进行映射。3.根据权利要求1所述的方法,其特征在于,所述内存信息包括第一通知消息和第二通知消息;所述根据所述执行函数对应的内存信息确定是否存在内存泄漏,并在确定存在内存泄漏的情况下确定待回溯的目标函数,包括:在每一可执行体调用内存分配函数申请内存时,触发第一通知消息,其中,所述第一通知消息用于记录所述可执行体进行内存申请,所述可执行体为所述执行函数所属的模块;在所述可执行体调用内存释放函数释放内存时,触发第二通知消息,所述第二通知消息用于记录所述可执行体进行内存释放;若存在触发第一通知消息且未触发第二通知消息的可执行体,确定存在内存泄漏,并将触发第一通知消息且未触发第二通知消息的可执行体确定为目标可执行体,并将所述目标可执行体中的执行函数确定为所述目标函数。4.根据权利要求3所述的方法,其特征在于,所述在每一可执行体调用内存分配函数申请内存时,触发第一通知消息,包括:针对每一所述可执行体,在确定所述可执行体调用所述内存分配函数时,根据代理映射关系确定与所述可执行体对应的代理分配函数,其中,所述代理映射关系中包括每一所述可执行体与该代理分配函数的地址之间的一一对应关系;针对每一所述可执行体,通过该可执行体对应的代理分配函数调用所述内存分配函数,并基于所述代理分配函数触发所述第一通知消息。5.根据权利要求3所述的方法,其特征在于,在所述根据所述目标函数对应的运行数据进行回溯,确定所述目标函数中发生内存泄漏的代码行的步骤之后,所述方法还包括:发出内存泄漏提示信息,其中,所述内存泄漏提示信息包括所述目标函数、所述目标函数中发生内存泄漏的代码行、所述目标可执行体以及所述目标可执行体申请的内存容量。6.根据权利要求2所述的方法,其特征在于,所述回溯信息包括调试信息和/或栈帧信息;所述将所述执行函数执行过程中的回溯信息存储在所述缓存中,包括:针对所述目标应用程序中的每一可执行体,将所述可执行体中的每一执行函数的回溯信息存储在缓存中;2CN114296986A权利要求书2/2页检测所述目标应用程序是否加载新的可执行体;若检测到所述目标应用程序加载新的可执行体,获取所述新的可执行体的各个执行函数的回溯信息,并将所述回溯信息存储在缓存中。7.根据权利要求2所述的方法,其特征在于,所述根据所述执行栈数据的存储地址对所述备份栈数据进行映射,包括:确定所述执行栈数据的第一起始位置、所述备份栈数据的第二起始位置、以及所述备份栈数据中的每一备份数