【技术实现步骤摘要】
内存泄露检测方法、装置、电子设备及可读存储介质
本专利技术涉及计算机
,尤其涉及一种内存泄露检测方法、装置、电子设备及可读存储介质。
技术介绍
在大型工程应用中,复杂的业务逻辑会导致开发人员在编码过程中未较好的管理对象的内存,可能会造成内存泄漏;比如,由程序语言C++或面向对象Objective-C编写的应用程序,动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费。内存泄露可能会导致程序运行速度减慢甚至系统崩溃等严重后果,因此,需要借助一些分析方法来定位内存泄漏的位置及原因,以解决内存泄露的问题。目前,可以在开发环境中集成工具来进行内存泄露的检测,然而,使用工具检测内存泄露会存在检测结果不准确的问题。因此,相关技术中,还可以通过建立动态检测机制,来进行内存泄露的检测。具体的,首先,创建数据结构,当对象内存进行分配时,在管理哈希表、红黑树或链表中,采用数据结构体记录内存分配的基本信息;然后,在特定时机挂起子线程,暂停程序运行,通过判定释放的内存地址与所述数据结构体记录的内存分配缓冲地址是否相同, ...
【技术保护点】
1.一种内存泄露检测方法,其特征在于,所述方法包括:/n在待检测程序退出运行的情况下,获取所述待检测程序的第一哈希表;其中,所述第一哈希表关联存储有第一类对象的第一类标识以及所述待检测程序退出运行时所述第一类对象对应的调用结果信息,所述调用结果信息包括所述第一类对象的实例化对象的第一数量,所述第一类对象为所述待检测程序运行过程中使用过的类对象;/n将所述第一类标识关联的实例化对象的第一数量与初始数量进行比较,得到比较结果;其中,所述初始数量包括所述待检测程序启动时所述第一类标识关联的实例化对象的第二数量;/n基于所述比较结果,确定所述待检测程序的内存泄露结果。/n
【技术特征摘要】
1.一种内存泄露检测方法,其特征在于,所述方法包括:
在待检测程序退出运行的情况下,获取所述待检测程序的第一哈希表;其中,所述第一哈希表关联存储有第一类对象的第一类标识以及所述待检测程序退出运行时所述第一类对象对应的调用结果信息,所述调用结果信息包括所述第一类对象的实例化对象的第一数量,所述第一类对象为所述待检测程序运行过程中使用过的类对象;
将所述第一类标识关联的实例化对象的第一数量与初始数量进行比较,得到比较结果;其中,所述初始数量包括所述待检测程序启动时所述第一类标识关联的实例化对象的第二数量;
基于所述比较结果,确定所述待检测程序的内存泄露结果。
2.根据权利要求1所述的方法,其特征在于,所述基于所述比较结果,确定所述待检测程序的内存泄露结果,包括:
在所述第一类标识中存在目标类标识的情况下,确定所述待检测程序存在内存泄露;其中,所述目标类标识关联的实例化对象的第一数量大于所述目标类标识关联的实例化对象的第二数量。
3.根据权利要求2所述的方法,其特征在于,所述在所述待检测程序退出运行的情况下,获取待检测程序的第一哈希表之前,所述方法还包括:
在所述待检测程序运行过程中调用所述第一类对象的构造函数,或者调用所述第一类对象的拷贝构造函数的情况下,将所述第一类对象的实例化对象的初始化信息存储于所述第一类对象的第一类标识关联的调用结果信息中;
在所述待检测程序运行过程中调用所述第一类对象的析构函数的情况下,将所述第一类对象的实例化对象的初始化信息从所述第一类对象的第一类标识关联的调用结果信息中删除。
4.根据权利要求3所述的方法,其特征在于,所述确定所述待检测程序存在内存泄露之后,所述方法还包括:
输出所述目标类标识关联的实例化对象的初始化信息。
5.根据权利要求1所述的方法,其特征在于,所述在所述待检测程序退出运行的情况下,获取待检测程序的第一哈希表之前,所述方法还包括:
在所述待检测程序运行过程中调用所述第一类对象的构造函数,或者调用所述第一类对象的拷贝构造函数的情况下,将所述第一哈希表中所述第一类对象的实例化对象的数量加上预设值;
在所述待检测程序运行过程中调用所述第一类对象的析构函数的情况下,...
【专利技术属性】
技术研发人员:苟亚明,
申请(专利权)人:北京奇艺世纪科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。