一种内存泄漏检测的方法、装置及电子设备

阅读: 评论:0

著录项
  • CN202211083635.3
  • 20220906
  • CN115454696A
  • 20221209
  • 浙江大华技术股份有限公司
  • 吴鹏飞;裘杲远;李辉;周俊杰
  • G06F11/07
  • G06F11/07

  • 浙江省杭州市滨江区滨安路1187号
  • 浙江(33)
  • 北京同达信恒知识产权代理有限公司
  • 潘平
摘要
本申请涉及一种内存泄漏检测的方法、装置及电子设备,用于实现对内存泄漏情况的检测。该方法包括:响应于达到预设检测条件,获取线程此刻的内存占用量,其中,内存占用量为内存申请总量与内存释放总量的差值;连续获取线程的n个内存占用量,其中,n为大于等于2的整数;根据线程的n个内存占用量,得到内存泄漏检测结果。基于上述方法,不需要对每个函数统计内存申请容量和次数,就能解决内存泄漏检测问题,且更便捷安全。
权利要求

1.一种内存泄漏检测的方法,其特征在于,所述方法包括:

响应于达到预设检测条件,获取线程此刻的内存占用量,其中,所述内存占用量为内存申请总量与内存释放总量的差值;

连续获取所述线程的n个内存占用量,其中,n为大于等于2的整数;

根据所述线程的n个内存占用量,得到内存泄漏检测结果。

2.如权利要求1所述的方法,其特征在于,在所述响应于达到预设检测条件,获取线程此刻的内存占用量之前,还包括:

获取所述线程的内存申请量或内存释放量;

在指定存储空间获取所述线程的内存占用量,基于所述线程的内存申请量或内存释放量,更新所述线程的内存占用量。

3.如权利要求2所述的方法,其特征在于,所述获取所述线程当前的内存申请量或内存释放量,包括:

基于包装函数,申请所述线程的内存,得到所述线程的内存申请量;或

基于所述包装函数,释放所述线程的内存,得到所述线程的内存释放量。

4.如权利要求1所述的方法,其特征在于,所述响应于达到预设检测条件,获取线程此刻的内存占用量,包括:

响应于所述线程的内存申请次数每达到第一预设阈值,获取所述线程此刻的内存占用量;或

响应于所述线程的内存释放次数每达到第二预设阈值,获取所述线程此刻的内存占用量;或

响应于时刻每达到第三预设阈值,获取所述线程此刻的内存占用量。

5.如权利要求1所述的方法,其特征在于,所述根据所述线程的n个内存占用量,得到内存泄漏检测结果,包括:

判断所述线程的n个内存占用量是否持续增长;

若是,则存在内存泄漏;

若否,则不存在内存泄漏。

6.一种内存泄漏检测的装置,其特征在于,所述装置包括:

触发模块,响应于达到预设检测条件,获取线程此刻的内存占用量,其中,所述内存占用量为内存申请总量与内存释放总量的差值;

获取模块,连续获取所述线程的n个内存占用量,其中,n为大于等于2的整数;

检测模块,根据所述线程的n个内存占用量,得到内存泄漏检测结果。

7.如权利要求6所述的装置,其特征在于,所述装置,还用于:

获取所述线程的内存申请量或内存释放量;

在指定存储空间获取所述线程的内存占用量,基于所述线程的内存申请量或内存释放量,更新所述线程的内存占用量。

8.如权利要求6所述的装置,其特征在于,所述触发模块,具体用于:

响应于所述线程的内存申请次数每达到第一预设阈值,获取所述线程此刻的内存占用量;或

响应于所述线程的内存释放次数每达到第二预设阈值,获取所述线程此刻的内存占用量;或

响应于时刻每达到第三预设阈值,获取所述线程此刻的内存占用量。

9.一种电子设备,其特征在于,包括:

存储器,用于存放计算机程序;

处理器,用于执行所述存储器上所存放的计算机程序时,实现权利要求1-5中任一项所述的方法步骤。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一项所述的方法步骤。

说明书
技术领域

本申请涉及计算机技术领域,尤其涉及一种内存泄漏检测的方法、装置及电子设备。

内存泄漏,是在计算机科学中的一种资源泄漏,内存泄漏并非指内存在物理上的消失,而是应用程序在使用完之后未被释放,导致这段内存空间无法再被程序利用,从而造成了内存的浪费。内存泄漏会导致可用内存的数量减少,从而降低计算机的性能。在最糟糕的情况下,过多的可用内存被分配掉会导致全部或部分设备停止正常工作,或者应用程序崩溃。

本申请的目的在于提供一种内存泄漏检测的方法、装置及电子设备,以实现对内存泄漏情况的检测。

第一方面,本申请提供了一种内存泄漏检测的方法,所述方法包括:

响应于达到预设检测条件,获取线程此刻的内存占用量,其中,所述内存占用量为内存申请总量与内存释放总量的差值;

连续获取所述线程的n个内存占用量,其中,n为大于等于2的整数;

根据所述线程的n个内存占用量,得到内存泄漏检测结果。

通过连续获取线程的n个内存占用量,根据获得的n个内存占用量的变化情况,可以检测出内存是否存在泄漏。本申请提供的方法不需要对每个函数统计内存申请容量和次数,也能解决内存泄漏检测问题,且更便捷安全。

在一种可能的设计中,在所述响应于达到预设检测条件,获取线程此刻的内存占用量之前,还包括:获取所述线程的内存申请量或内存释放量;在指定存储空间获取所述线程的内存占用量,基于所述线程的内存申请量或内存释放量,更新所述线程的内存占用量。

通过在指定存储空间保存线程的内存占用量,可以便于后续线程在申请内存或释放内存时,快速准确的获取到该线程的内存占用量,并对该线程的内存占用量进行更新。

在一种可能的设计中,所述获取所述线程当前的内存申请量或内存释放量,包括:基于包装函数,申请所述线程的内存,得到所述线程的内存申请量;或基于所述包装函数,释放所述线程的内存,得到所述线程的内存释放量。

通过包装函数来申请、释放线程的内存,可以获取线程每一次的内存申请量和内存释放量,便于后续计算得到线程的内存占用量。

在一种可能的设计中,所述响应于达到预设检测条件,获取线程此刻的内存占用量,包括:响应于所述线程的内存申请次数每达到第一预设阈值,获取所述线程此刻的内存占用量;或响应于所述线程的内存释放次数每达到第二预设阈值,获取所述线程此刻的内存占用量;或响应于时刻每达到第三预设阈值,获取所述线程此刻的内存占用量。

通过设置获取线程的内存占用量的触发条件,可以实现周期性的获取线程的内存占用量,从而避免获取内存占用量的间隔时间太久,导致后续无法准确检测出内存泄漏的根本原因。

在一种可能的设计中,所述根据所述线程的n个内存占用量,得到内存泄漏检测结果,包括:判断所述线程的n个内存占用量是否持续增长;若是,则存在内存泄漏;若否,则不存在内存泄漏。

通过判断线程连续的n个内存占用量是否持续增长,从而确定内存是否存在泄漏的方式更快捷且安全。

第二方面,本申请提供了一种内存泄漏检测的装置,所述装置包括:

触发模块,响应于达到预设检测条件,获取线程此刻的内存占用量,其中,所述内存占用量为内存申请总量与内存释放总量的差值;

获取模块,连续获取所述线程的n个内存占用量,其中,n为大于等于2的整数;

检测模块,根据所述线程的n个内存占用量,得到内存泄漏检测结果。

在一种可能的设计中,所述装置,还用于获取所述线程的内存申请量或内存释放量;在指定存储空间获取所述线程的内存占用量,基于所述线程的内存申请量或内存释放量,更新所述线程的内存占用量。

在一种可能的设计中,所述装置,还用于基于包装函数,申请所述线程的内存,得到所述线程的内存申请量;或基于所述包装函数,释放所述线程的内存,得到所述线程的内存释放量。

在一种可能的设计中,所述触发模块,具体用于响应于所述线程的内存申请次数每达到第一预设阈值,获取所述线程此刻的内存占用量;或响应于所述线程的内存释放次数每达到第二预设阈值,获取所述线程此刻的内存占用量;或响应于时刻每达到第三预设阈值,获取所述线程此刻的内存占用量。

在一种可能的设计中,所述检测模块,具体用于判断所述线程的n个内存占用量是否持续增长;若是,则存在内存泄漏;若否,则不存在内存泄漏。

第三方面,本申请提供了一种电子设备,所述电子设备包括:

存储器,用于存放计算机程序;

处理器,用于执行所述存储器上所存放的计算机程序时,实现上述的一种内存泄漏检测的方法步骤。

第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述的一种内存泄漏检测的方法步骤。

上述第二方面至第四方面中的各个方面以及各个方面可能达到的技术效果请参照上述针对第一方面或第一方面中的各种可能方案可以达到的技术效果说明,这里不再重复赘述。

图1为本申请提供的一种内存泄漏检测方法的示意图;

图2为本申请提供的一种内存泄漏检测装置的示意图;

图3为本申请提供的一种电子设备的结构的示意图。

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例、以及计算机程序产品中。

在本申请的描述中“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。A与B连接,可以表示:A与B直接连接和A与B通过C连接这两种情况。另外,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。

为了便于本领域技术人员更好理解本申请实施例所提供的技术方案,下面对涉及的专业术语作如下简要说明:

GCC(GNU Compiler Collection,CNU编译器套件)是由CNU开发的编程语言译器。

GCC的wrap选项:对symbol使用包装函数(wrapper function),任何对symbol未定义的引用(undefined reference)会被解析成__wrap_symbol,而任何对__real_symbol未定义的引用会被解析成symbol。即当一个名为symbol符号使用wrap功能时,工程中任何用到symbol符号的地方实际使用的是__wrap_symbol符号,任何用到__real_symbol的地方实际使用的是真正的symbol。

Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX(Unix-like)操作系统,是一个基于POSIX(Portable Operating System Interface,可移植操作系统接口)的多用户、多任务、支持多线程和多CPU的操作系统。

进程:操作系统分配资源(CPU、内存等)的基本单位,它是程序执行时的一个示例。

线程:程序执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位。一个进程可以由很多个线程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。

值得说明的是,由于进程和线程存在包含关系,进程中至少包含一个线程,所以本申请提供的方法不仅适用于只存在进程的应用场景,也适用于只存在线程的应用场景,还适用于进程和线程都存在的应用场景。在本申请实施例中,采用的最小单位为线程。

在本申请实施例中,通过GCC的wrap技术,实现__wrap_malloc、__wrap_calloc、__wrap_realloc、__wrap_free这4个函数,使得对于malloc函数、calloc函数、realloc函数、free函数的调用能够被自动重定向至对应的__wrap_*函数。

另外,本申请实施例包含的技术特征可以任意结合使用,本领域技术人员应当明白,从实际应用情况出发,经本申请实施例中技术特征进行合理结合得到的技术方案,同样可以解决相同的技术问题或达到相同的技术效果。

下面结合附图对本申请实施例所提供的方法作出进一步详细说明。

参阅图1所示,本申请实施例提供了一种内存泄漏检测的方法,具体流程如下:

步骤101:响应于达到预设检测条件,获取线程此刻的内存占用量;

在本申请实施例中,通过将malloc函数、calloc函数、realloc函数自动重定向至__wrap_malloc函数、__wrap_calloc函数、__wrap_realloc函数来申请线程的内存,通过将free函数自动重定向至__wrap_free函数来释放线程的内存。

具体来说,本申请实施例中涉及的内存申请函数主要有:

void*__wrap_malloc(size_t size)

void*__wrap_calloc(size_t nmemb,size_t size)

void*__wrap_realloc(void*ptr,size_t size)

本申请实施例中涉及的内释放函数主要有:

void__wrap_free(void*ptr)

通过包装函数来申请、释放线程的内存,可以获得线程每一次申请内存时的内存申请量和每一次释放内存时的内存释放量,便于后续根据线程的内存申请量或内存释放量来更新线程的内存占用量,其中,内存占用量为内存申请总量与内存释放总量的差值。

在本申请实施中,每个线程或进程申请一个固定大小的额外节点来保存信息,保存的信息包括但不限于该线程或该进程的内存占用量、内存申请次数和内存释放次数。申请的每个线程或进程的额外节点可以通过键值数据结构kvmap(key value map)或链表数据结构连接,用户不感知额外节点,即额外节点的指针不返回给用户。

在本申请实施例中,通过wrap包装函数申请线程的内存或释放线程的内存,得到该线程的内存申请量或内存释放量,然后根据内存块指针到该线程的ID信息,根据该线程的ID信息从额外节点中获取对应线程当前的内存占用量、内存申请次数或内存释放次数,并基于得到的内存申请量或内存释放量更新当前的内存占用量、内存申请次数或内存释放次数。

情况一,当通过wrap包装函数申请线程的内存时,得到该线程的内存申请量,根据内存块指针到该线程的ID信息,根据ID信息从额外节点中获取对应线程当前的内存占用量、内存申请次数。然后在对应线程当前的内存占用量上加上该线程的内存申请量,得到对应线程更新的内存占用量;在该线程的内存申请次数上加一。举例来说,若线程A当前的内存占用量为300字节,内存申请次数为99次,当线程A再一次申请了100字节内存时,根据线程A的ID信息从额外节点中到对应线程当前的内存占用量300字节,在300字节的基础上加上申请的100字节,更新后内存占用量为400字节,且内存申请次数为99+1=100次。

情况二,当通过wrap包装函数释放线程的内存时,得到该线程的内存释放量,根据内存块指针到该线程的ID信息,根据ID信息从额外节点中获取对应线程当前的内存占用量、内存释放次数。然后在对应线程当前的内存占用量上减去该线程的内存释放量,得到对应线程更新的内存占用量;在对应线程的内存释放次数上加一。举例来说,若线程B当前的内存占用量为300字节,内存释放次数为99次,当线程B再一次释放了200字节内存时,根据线程B的ID信息从额外节点中到对应线程当前的内存占用量300字节,在300字节的基础上减去释放的200字节,更新后内存占用量为100字节,且内存释放次数为99+1=100次。

通过申请额外节点来保存线程或进程的内存占用量,可以便于后续线程或进程在申请内存或释放内存时,快速准确的获取到该线程的内存占用量,并对该线程的内存占用量进行实时更新。

在本申请实施例中,触发获取线程此刻的内存占用量的条件可以是下述3种中的任一种。

在一种可能的实施方式中,将触发获取线程此刻的内存占用量的条件设置为线程的内存申请次数达到第一预设阈值。当该线程的内存申请次数每达到第一预设阈值时,获取该线程此刻的内存占用量,并重置该线程的内存申请次数为0。举例来说,设置第一预设阈值为100,当线程的内存申请次数达到100次时,获取该线程此刻的内存占用量为200字节,刷新该线程的内存申请次数为0,并重新开始统计。当该线程的内存申请次数再次达到100次时,获取该线程此刻的内存占用量为250字节,刷新该线程的内存申请次数为0,并重新开始统计,以此为循环。

在一种可能的实施方式中,将触发获取线程此刻的内存占用量的条件设置为线程的内存释放次数达到第二预设阈值。当该线程的内存释放次数每达到第二预设阈值时,获取该线程此刻的内存占用量,并重置该线程的内存释放次数为0。举例来说,设置第二预设阈值为200,当线程的内存释放次数达到200次时,获取该线程此刻的内存占用量为300字节,刷新该线程的内存释放次数为0,并重新开始统计。当该线程的内存释放次数再次达到100次时,获取该线程此刻的内存占用量为400字节,刷新该线程的内存释放次数为0,并重新开始统计,以此为循环。

在一种可能的实施方式中,将触发获取线程此刻的内存占用量的条件设置为时刻达到第三预设阈值。当时刻每达到第三预设阈值时,获取所述线程此刻的内存占用量,并重置时刻为0。举例来说,设置第三预设阈值为5min,当时刻达到5min时,获取线程此刻的内存占用量为100字节,刷新时刻为0,并重新开始计时。当时刻再次达到5min时,获取该线程此刻的内存占用量为200字节,刷新时刻为0,并重新开始计时,以此为循环。

通过设置获取线程的内存占用量的触发条件,可以实现周期性的获取线程的内存占用量,从而避免获取内存占用量的间隔时间太久,导致后续无法准确检测出内存泄漏的根本原因。

步骤102:连续获取线程的n个内存占用量;

在本申请实施例中,通过上述步骤101中设置的获取线程的内存占用量的触发条件,可以连续的获取线程的n个内存占用量,其中,n为大于等于2的整数。

步骤103:根据线程的n个内存占用量,得到内存泄漏检测结果。

在本申请实施例中,在得到线程的n个内存占用量后,判断线程的n个内存占用量是否持续增长。

在一种可能的实施方式中,若线程的n个内存占用量是持续增长,则表明存在内存泄漏。比如,连续获得的线程的10个内存占用量具体如表1所示:

表1

由表1可知,第1个内存占用量为100字节,第2个内存占用量为200字节,第3个内存占用量为300字节,第4个内存占用量为400字节,第5个内存占用量为500字节,第6个内存占用量为600字节,第7个内存占用量为700字节,第8个内存占用量为800字节,第9个内存占用量为900字节,第10个内存占用量为1000字节。从第1个内存占用量到第10个内存占用量,10个内存占用量在持续性的增长。在本申请实施例中,若线程的内存占用量在持续增长,则表明存在内存泄漏。

需要说明的是,线程连续的n个内存占用量的增长方式不是唯一的,可以如表1中,n个内存占用量规律性的增长,也可以如表2中,n个内存占用量随机的增长。

表2

由表2可知,第1个内存占用量为100字节,第2个内存占用量为200字节,第3个内存占用量为250字节,第4个内存占用量为400字节,第5个内存占用量为500字节,第6个内存占用量为600字节,第7个内存占用量为800字节,第8个内存占用量为850字节,第9个内存占用量为1000字节,第10个内存占用量为1100字节。从第1个内存占用量到第10个内存占用量,10个内存占用量在持续性的增长,但增长方式无规律。

在一种可能的实施方式中,若n个线程的内存占用量不是持续增长,则表明不存在内存泄漏。比如,连续获得的10个线程的内存占用量具体如表3所示:

表3

由表3可知,第1个内存占用量为200字节,第2个内存占用量为100字节,第3个内存占用量为150字节,第4个内存占用量为100字节,第5个内存占用量为200字节,第6个内存占用量为250字节,第7个内存占用量为150字节,第8个内存占用量为100字节,第9个内存占用量为300字节,第10个内存占用量为200字节。从第1个内存占用量到第10个内存占用量,10个内存占用量上下波动,没有持续性增长,则表明不存在内存泄漏。

进一步的,在判断出存在内存泄漏后,可以通过打印堆栈,业务梳理等方式,快速定位到内存泄漏的根本原因。

综合上述方法,通过连续获取线程的n个内存占用量,根据获得的n个内存占用量的变化情况,可以检测出内存是否存在泄漏。本申请提供的方法不需要对每个函数统计内存申请容量和次数,也能解决内存泄漏检测问题,且更便捷安全。

基于同一发明构思,本申请还提供了一种内存泄漏检测的装置,用以实现对内存泄漏情况的检测,参见图2,该装置包括:

触发模块201,响应于达到预设检测条件,获取线程此刻的内存占用量,其中,所述内存占用量为内存申请总量与内存释放总量的差值;

获取模块202,连续获取所述线程的n个内存占用量,其中,n为大于等于2的整数;

检测模块203,根据所述线程的n个内存占用量,得到内存泄漏检测结果。

在一种可能的设计中,所述装置,还用于获取所述线程的内存申请量或内存释放量;在指定存储空间获取所述线程的内存占用量,基于所述线程的内存申请量或内存释放量,更新所述线程的内存占用量。

在一种可能的设计中,所述装置,还用于基于包装函数,申请所述线程的内存,得到所述线程的内存申请量;或基于所述包装函数,释放所述线程的内存,得到所述线程的内存释放量。

在一种可能的设计中,所述触发模块201,具体用于响应于所述线程的内存申请次数每达到第一预设阈值,获取所述线程此刻的内存占用量;或响应于所述线程的内存释放次数每达到第二预设阈值,获取所述线程此刻的内存占用量;或响应于时刻每达到第三预设阈值,获取所述线程此刻的内存占用量。

在一种可能的设计中,所述检测模块203,具体用于判断所述线程的n个内存占用量是否持续增长;若是,则存在内存泄漏;若否,则不存在内存泄漏。

基于上述系统,可以实现对内存泄漏的检测,且不需要对每个函数统计内存申请容量和次数,从而避免统计每个函数的内存申请容量时出错,有效提高了内存泄漏检测的准确性和便利性。

基于同一发明构思,本申请实施例中还提供了一种电子设备,所述电子设备可以实现前述一种内存泄漏检测的装置的功能,参考图3,所述电子设备包括:

至少一个处理器301,以及与至少一个处理器301连接的存储器302,本申请实施例中不限定处理器301与存储器302之间的具体连接介质,图3中是以处理器301和存储器302之间通过总线300连接为例。总线300在图3中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线300可以分为地址总线、数据总线、控制总线等,为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器301也可以称为控制器,对于名称不做限制。

在本申请实施例中,存储器302存储有可被至少一个处理器301执行的指令,至少一个处理器301通过执行存储器302存储的指令,可以执行前文论述的内存泄漏检测的方法。处理器301可以实现图2所示的装置中各个模块的功能。

其中,处理器301是该装置的控制中心,可以利用各种接口和线路连接整个该控制设备的各个部分,通过运行或执行存储在存储器302内的指令以及调用存储在存储器302内的数据,该装置的各种功能和处理数据,从而对该装置进行整体监控。

在一种可能的设计中,处理器301可包括一个或多个处理单元,处理器301可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器301中。在一些实施例中,处理器301和存储器302可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。

处理器301可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的内存泄漏检测的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器302作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器302可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器302是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器302还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

通过对处理器301进行设计编程,可以将前述实施例中介绍的内存泄漏检测的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图1所示的实施例的内存泄漏检测的方法的步骤。如何对处理器301进行设计编程为本领域技术人员所公知的技术,这里不再赘述。

基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行前文论述内存泄漏检测的方法。

在一些可能的实施方式中,本申请提供的内存泄漏检测的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在装置上运行时,程序代码用于使该控制设备执行本说明书上述描述的根据本申请各种示例性实施方式的内存泄漏检测的方法中的步骤。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

本文发布于:2023-04-15 06:38:54,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/87116.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图