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

技术编号:35910513 阅读:20 留言:0更新日期:2022-12-10 10:50
本申请涉及一种内存泄漏检测的方法、装置及电子设备,用于实现对内存泄漏情况的检测。该方法包括:响应于达到预设检测条件,获取线程此刻的内存占用量,其中,内存占用量为内存申请总量与内存释放总量的差值;连续获取线程的n个内存占用量,其中,n为大于等于2的整数;根据线程的n个内存占用量,得到内存泄漏检测结果。基于上述方法,不需要对每个函数统计内存申请容量和次数,就能解决内存泄漏检测问题,且更便捷安全。且更便捷安全。且更便捷安全。

【技术实现步骤摘要】
一种内存泄漏检测的方法、装置及电子设备


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

技术介绍

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

技术实现思路

[0003]本申请的目的在于提供一种内存泄漏检测的方法、装置及电子设备,以实现对内存泄漏情况的检测。
[0004]第一方面,本申请提供了一种内存泄漏检测的方法,所述方法包括:
[0005]响应于达到预设检测条件,获取线程此刻的内存占用量,其中,所述内存占用量为内存申请总量与内存释放总量的差值;
[0006]连续获取所述线程的n个内存占用量,其中,n为大于等于2的整数;
[0007]根据所述线程的n个内存占用量,得到内存泄漏检测结果。
[0008]通过连续获取线程的n个内存占用量,根据获得的n个内存占用量的变化情况,可以检测出内存是否存在泄漏。本申请提供的方法不需要对每个函数统计内存申请容量和次数,也能解决内存泄漏检测问题,且更便捷安全。
[0009]在一种可能的设计中,在所述响应于达到预设检测条件,获取线程此刻的内存占用量之前,还包括:获取所述线程的内存申请量或内存释放量;在指定存储空间获取所述线程的内存占用量,基于所述线程的内存申请量或内存释放量,更新所述线程的内存占用量。
[0010]通过在指定存储空间保存线程的内存占用量,可以便于后续线程在申请内存或释放内存时,快速准确的获取到该线程的内存占用量,并对该线程的内存占用量进行更新。
[0011]在一种可能的设计中,所述获取所述线程当前的内存申请量或内存释放量,包括:基于包装函数,申请所述线程的内存,得到所述线程的内存申请量;或基于所述包装函数,释放所述线程的内存,得到所述线程的内存释放量。
[0012]通过包装函数来申请、释放线程的内存,可以获取线程每一次的内存申请量和内存释放量,便于后续计算得到线程的内存占用量。
[0013]在一种可能的设计中,所述响应于达到预设检测条件,获取线程此刻的内存占用量,包括:响应于所述线程的内存申请次数每达到第一预设阈值,获取所述线程此刻的内存占用量;或响应于所述线程的内存释放次数每达到第二预设阈值,获取所述线程此刻的内存占用量;或响应于时刻每达到第三预设阈值,获取所述线程此刻的内存占用量。
[0014]通过设置获取线程的内存占用量的触发条件,可以实现周期性的获取线程的内存占用量,从而避免获取内存占用量的间隔时间太久,导致后续无法准确检测出内存泄漏的根本原因。
[0015]在一种可能的设计中,所述根据所述线程的n个内存占用量,得到内存泄漏检测结果,包括:判断所述线程的n个内存占用量是否持续增长;若是,则存在内存泄漏;若否,则不存在内存泄漏。
[0016]通过判断线程连续的n个内存占用量是否持续增长,从而确定内存是否存在泄漏的方式更快捷且安全。
[0017]第二方面,本申请提供了一种内存泄漏检测的装置,所述装置包括:
[0018]触发模块,响应于达到预设检测条件,获取线程此刻的内存占用量,其中,所述内存占用量为内存申请总量与内存释放总量的差值;
[0019]获取模块,连续获取所述线程的n个内存占用量,其中,n为大于等于2的整数;
[0020]检测模块,根据所述线程的n个内存占用量,得到内存泄漏检测结果。
[0021]在一种可能的设计中,所述装置,还用于获取所述线程的内存申请量或内存释放量;在指定存储空间获取所述线程的内存占用量,基于所述线程的内存申请量或内存释放量,更新所述线程的内存占用量。
[0022]在一种可能的设计中,所述装置,还用于基于包装函数,申请所述线程的内存,得到所述线程的内存申请量;或基于所述包装函数,释放所述线程的内存,得到所述线程的内存释放量。
[0023]在一种可能的设计中,所述触发模块,具体用于响应于所述线程的内存申请次数每达到第一预设阈值,获取所述线程此刻的内存占用量;或响应于所述线程的内存释放次数每达到第二预设阈值,获取所述线程此刻的内存占用量;或响应于时刻每达到第三预设阈值,获取所述线程此刻的内存占用量。
[0024]在一种可能的设计中,所述检测模块,具体用于判断所述线程的n个内存占用量是否持续增长;若是,则存在内存泄漏;若否,则不存在内存泄漏。
[0025]第三方面,本申请提供了一种电子设备,所述电子设备包括:
[0026]存储器,用于存放计算机程序;
[0027]处理器,用于执行所述存储器上所存放的计算机程序时,实现上述的一种内存泄漏检测的方法步骤。
[0028]第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述的一种内存泄漏检测的方法步骤。
[0029]上述第二方面至第四方面中的各个方面以及各个方面可能达到的技术效果请参照上述针对第一方面或第一方面中的各种可能方案可以达到的技术效果说明,这里不再重复赘述。
附图说明
[0030]图1为本申请提供的一种内存泄漏检测方法的示意图;
[0031]图2为本申请提供的一种内存泄漏检测装置的示意图;
[0032]图3为本申请提供的一种电子设备的结构的示意图。
具体实施方式
[0033]为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例、以及计算机程序产品中。
[0034]在本申请的描述中“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。A与B连接,可以表示:A与B直接连接和A与B通过C连接这两种情况。另外,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
[0035]为了便于本领域技术人员更好理解本申请实施例所提供的技术方案,下面对涉及的专业术语作如下简要说明:
[0036]GCC(GNU Compiler Collection,CNU编译器套件)是由CNU开发的编程语言译器。
[0037]GCC的wrap选项:对symbol使用包装函数(wrapper function),任何对symbol未定义的引用(undefined reference)会被解析成__wrap_symbol,而任何对__real_symbol未定义的引用会被解析成symbol。即当一个名为sy本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存泄漏检测的方法,其特征在于,所述方法包括:响应于达到预设检测条件,获取线程此刻的内存占用量,其中,所述内存占用量为内存申请总量与内存释放总量的差值;连续获取所述线程的n个内存占用量,其中,n为大于等于2的整数;根据所述线程的n个内存占用量,得到内存泄漏检测结果。2.如权利要求1所述的方法,其特征在于,在所述响应于达到预设检测条件,获取线程此刻的内存占用量之前,还包括:获取所述线程的内存申请量或内存释放量;在指定存储空间获取所述线程的内存占用量,基于所述线程的内存申请量或内存释放量,更新所述线程的内存占用量。3.如权利要求2所述的方法,其特征在于,所述获取所述线程当前的内存申请量或内存释放量,包括:基于包装函数,申请所述线程的内存,得到所述线程的内存申请量;或基于所述包装函数,释放所述线程的内存,得到所述线程的内存释放量。4.如权利要求1所述的方法,其特征在于,所述响应于达到预设检测条件,获取线程此刻的内存占用量,包括:响应于所述线程的内存申请次数每达到第一预设阈值,获取所述线程此刻的内存占用量;或响应于所述线程的内存释放次数每达到第二预设阈值,获取所述线程此刻的内存占用量;或响应于时刻每达到第三预设阈值,获取所述线程此刻的内存占用量。5.如权利要求1所述的方法,其特征在于,所述根据所述线程的n个内存占用量,得到内存泄漏检测结果,包括:判断所述线程的n个内存占用量是否持续增长;若是,则存...

【专利技术属性】
技术研发人员:吴鹏飞裘杲远李辉周俊杰
申请(专利权)人:浙江大华技术股份有限公司
类型:发明
国别省市:

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

1