CN114968645B - 一种内存泄露的检测方法、装置、电子设备及存储介质 - Google Patents

一种内存泄露的检测方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114968645B
CN114968645B CN202210888177.4A CN202210888177A CN114968645B CN 114968645 B CN114968645 B CN 114968645B CN 202210888177 A CN202210888177 A CN 202210888177A CN 114968645 B CN114968645 B CN 114968645B
Authority
CN
China
Prior art keywords
program
memory
determining
longest
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210888177.4A
Other languages
English (en)
Other versions
CN114968645A (zh
Inventor
庞飞翔
严龙
罗鑫
马丽娜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zhongke Flux Technology Co ltd
Original Assignee
Beijing Ruixin High Throughput Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Ruixin High Throughput Technology Co ltd filed Critical Beijing Ruixin High Throughput Technology Co ltd
Priority to CN202210888177.4A priority Critical patent/CN114968645B/zh
Publication of CN114968645A publication Critical patent/CN114968645A/zh
Application granted granted Critical
Publication of CN114968645B publication Critical patent/CN114968645B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及内存管理技术领域,尤其涉及一种内存泄露的检测方法、装置、电子设备及存储介质,该方法包括:根据连续n次内存对象的分配数量的变化,确定内存泄露对象;确定内存泄露对象的使用程序;并确定操作系统将内存泄露对象分配给使用程序的起始时间、最长使用时长;按照第二预设时间间隔,根据使用程序对应的起始时间,确定使用程序使用该使用程序对应的内存泄露对象的已使用时长;判断已使用时长是否大于使用程序对应的最长使用时长;若已使用时长大于使用程序对应的最长使用时长,则确定使用程序为内存泄露程序。通过本申请的方式,能够准确确定存在内存泄露的程序。

Description

一种内存泄露的检测方法、装置、电子设备及存储介质
技术领域
本发明涉及内存管理技术领域,具体而言,涉及一种内存泄露的检测方法、装置、电子设备及存储介质。
背景技术
在程序运行过程中,会向操作系统请求分配内存,但程序在内存使用完成之后可能并没有释放给操作系统,在下一次运行时会再次向操作系统请求内存,使操作系统分配给该程序过多的内存,造成了操作系统的内存产生了泄露。
目前使用的内存泄露检测工具通过程序对内存使用时间来确定是否存在泄露,如果程序长时间没有释放内存,则认定该程序存在泄露。
但有些程序需长时间的使用部分内存,因此在工具设置的统一时长内并不会进行内存释放,导致内存泄露检测工具错误的认为这些程序长时间无内存释放,存在内存泄露。因此,当前的内存检测工具不够准确。
发明内容
有鉴于此,本申请的目的在于提供一种内存泄露的检测方法、装置、电子设备及存储介质,能够准确确定存在内存泄露的程序。
第一方面,本申请实施例提供了一种内存泄露的检测方法,该内存泄露的检测方法包括:
按照第一预设时间间隔,获取操作系统已分配的多个空间大小的内存对象的分配数量;
根据连续n次内存对象的分配数量的变化,确定内存泄露对象;
确定内存泄露对象的使用程序;并确定操作系统将内存泄露对象分配给使用程序的起始时间、最长使用时长;最长使用时长为使用程序使用内存泄露对象的最长时长;
按照第二预设时间间隔,根据使用程序对应的起始时间,确定使用程序使用该使用程序对应的内存泄露对象的已使用时长;
判断已使用时长是否大于使用程序对应的最长使用时长;
若已使用时长大于使用程序对应的最长使用时长,则确定使用程序为内存泄露程序。
在一种可能的实施方式中,根据连续n次内存对象的分配数量的变化,确定内存泄露对象,包括:
根据连续两次内存对象的分配数量,计算后一次内存对象的分配数量减去前一次内存对象的分配数量的差值;
计算所有差值的平均值,得到目标值;
若目标值大于预设阈值,则内存对象为内存泄露对象。
在一种可能的实施方式中,在根据使用程序对应的起始时间,确定使用程序使用该使用程序对应的内存泄露对象的已使用时长之前,该方法还包括:
将内存泄露对象、使用程序、使用程序对应的起始时间、使用程序对应的最长使用时长对应存储到存储表中。
在一种可能的实施方式中,在确定使用程序为内存泄露程序之前,该方法还包括:
若使用程序已经释放使用程序对应的内存泄露对象,则使用程序为无内存泄漏程序,并在存储表中删除使用程序。
在一种可能的实施方式中,该方法还包括:
确定内存泄露程序是否存在释放代码;
若不存在释放代码,则内存泄露程序确定为最终的内存泄露程序;
若存在释放代码,则内存泄露程序确定为无内存泄漏程序。
在一种可能的实施方式中,确定操作系统将内存泄露对象分配给使用程序的最长使用时长,包括:
确定使用程序的代码的运行周期;
根据运行周期,确定内存泄露对象分配给使用程序的最长使用时长;最长使用时长大于或等于运行周期。
第二方面,本申请实施例还提供了一种内存泄露的检测装置,该内存泄露的检测装置包括:
获取模块,用于按照第一预设时间间隔,获取操作系统已分配的多个空间大小的内存对象的分配数量;
确定模块,用于根据连续n次内存对象的分配数量的变化,确定内存泄露对象;
确定模块,还用于确定内存泄露对象的使用程序;
确定模块,还用于确定操作系统将内存泄露对象分配给使用程序的起始时间、最长使用时长;最长使用时长为使用程序使用内存泄露对象的最长时长;
确定模块,还用于按照第二预设时间间隔,根据使用程序对应的起始时间,确定使用程序使用该使用程序对应的内存泄露对象的已使用时长;
判断模块,用于判断已使用时长是否大于使用程序对应的最长使用时长;
确定模块,还用于若已使用时长大于使用程序对应的最长使用时长,则确定使用程序为内存泄露程序。
在一种可能的实施方式中,确定模块,具体用于根据连续两次内存对象的分配数量,计算后一次内存对象的分配数量减去前一次内存对象的分配数量的差值;计算所有差值的平均值,得到目标值;若目标值大于预设阈值,则内存对象为内存泄露对象。
在一种可能的实施方式中,该装置还包括:存储模块;
存储模块,用于将内存泄露对象、使用程序、使用程序对应的起始时间、使用程序对应的最长使用时长对应存储到存储表中。
在一种可能的实施方式中,该装置还包括:删除模块;
删除模块,用于若使用程序已经释放使用程序对应的内存泄露对象,则使用程序为无内存泄漏程序,并在存储表中删除使用程序。
在一种可能的实施方式中,确定模块,还用于确定内存泄露程序是否存在释放代码;
确定模块,还用于若不存在释放代码,则内存泄露程序确定为最终的内存泄露程序;
确定模块,还用于若存在释放代码,则内存泄露程序确定为无内存泄漏程序。
在一种可能的实施方式中,确定模块,具体用于确定使用程序的代码的运行周期;根据运行周期,确定内存泄露对象分配给使用程序的最长使用时长;最长使用时长大于或等于运行周期。
第三方面,本申请实施例还提供了一种电子设备,包括:处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当电子设备运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以执行如第一方面任一项内存泄露的检测方法的步骤。
第四方面,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行如第一方面任一项内存泄露的检测方法的步骤。
本申请实施例提供了一种内存泄露的检测方法、装置、电子设备及存储介质,该方法包括:按照第一预设时间间隔,获取操作系统已分配的多个空间大小的内存对象的分配数量;根据连续n次内存对象的分配数量的变化,确定内存泄露对象;确定内存泄露对象的使用程序;并确定操作系统将内存泄露对象分配给使用程序的起始时间、最长使用时长;最长使用时长为使用程序使用内存泄露对象的最长时长;按照第二预设时间间隔,根据使用程序对应的起始时间,确定使用程序使用该使用程序对应的内存泄露对象的已使用时长;判断已使用时长是否大于使用程序对应的最长使用时长;若已使用时长大于使用程序对应的最长使用时长,则确定使用程序为内存泄露程序。本申请通过内存对象的分配数量确定内存泄露对象,并为使用该内存泄露对象的使用程序确定起始时间、最长使用时长,根据使用程序使用该使用程序对应的内存泄露对象的已使用时长,确定内存泄露程序,能够准确确定存在内存泄露的程序。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例提供的一种内存泄露的检测方法的流程图;
图2示出了本申请实施例提供的另一种内存泄露的检测方法的流程图;
图3示出了本申请实施例提供的一种内存泄露的检测装置的结构示意图;
图4示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。 应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。 此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了使得本领域技术人员能够使用本申请内容,结合特定应用场景“内存管理技术领域”,给出以下实施方式。对于本领域技术人员来说,在不脱离本申请的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。虽然本申请主要围绕“内存管理技术领域”进行描述,但是应该理解,这仅是一个示例性实施例。
下面对本申请实施例提供的一种内存泄露的检测方法进行详细说明。
参照图1所示,为本申请实施例提供的一种内存泄露的检测方法的流程示意图,该内存泄露的检测方法的具体执行过程为:
S101、按照第一预设时间间隔,获取操作系统已分配的多个空间大小的内存对象的分配数量。
S102、根据连续n次内存对象的分配数量的变化,确定内存泄露对象。
S103、确定内存泄露对象的使用程序。
S104、确定操作系统将内存泄露对象分配给使用程序的起始时间、最长使用时长。
S105、按照第二预设时间间隔,根据使用程序对应的起始时间,确定使用程序使用该使用程序对应的内存泄露对象的已使用时长。
S106、判断已使用时长是否大于使用程序对应的最长使用时长;若已使用时长大于使用程序对应的最长使用时长,则确定使用程序为内存泄露程序。
下面对本申请实施例示例性的各步骤进行说明:
S101、按照第一预设时间间隔,获取操作系统已分配的多个空间大小的内存对象的分配数量。
在本申请实施方式中,在系统proc/slabinfo文件中获取操作系统已分配的多个空间大小的内存对象的分配数量。
这里,proc/slabinfo文件中存储了所有空间大小的内存对象的分配数量,内存对象包括512字节的内存对象、1024字节的内存对象等,也就是说,proc/slabinfo文件中存储了512字节的内存对象的已分配数量、1024字节的内存对象的已分配数量等。
S102、根据连续n次内存对象的分配数量的变化,确定内存泄露对象。
具体地,根据连续两次内存对象的分配数量,计算后一次内存对象的分配数量减去前一次内存对象的分配数量的差值;计算所有差值的平均值,得到目标值;若目标值大于预设阈值,则内存对象为内存泄露对象。
这里,在连续n次内存对象的分配数量中,确定所有连续两次同一个内存对象的分配数量差值,然后确定该内存对象的目标值,根据目标值确定存在内存泄露的内存对象,也就是内存泄露对象。
例如,根据连续3次内存对象的分配数量的变化,确定内存泄露对象,确定第一次512字节的内存对象和第二次512字节的内存对象的差值a1,第一次1024字节的内存对象和第二次1024字节的内存对象的差值a2;确定第二次512字节的内存对象和第三次512字节的内存对象的差值b1,第二次1024字节的内存对象和第三次1024字节的内存对象的差值b2;然后确定512字节的内存对象的目标值为(a1+a2)/2,确定1024字节的内存对象的目标值为(b1+b2)/2;将目标值大于预设阈值的字节对象确定为内存泄露对象。
S103、确定内存泄露对象的使用程序。
在本申请实施方式中,在确定了内存泄露对象后,确定操作系统把该内存泄露对象分配给了哪些实用程序。
S104、确定操作系统将内存泄露对象分配给使用程序的起始时间、最长使用时长。
在本申请实施方式中,确定操作系统将内存泄露对象分配给使用程序的起始时间,最长使用时长。
这里,所述最长使用时长为所述使用程序使用所述内存泄露对象的最长时长。
具体地,确定使用程序的代码的运行周期;根据运行周期,确定内存泄露对象分配给使用程序的最长使用时长;最长使用时长大于或等于运行周期。
在本申请实施方式中,根据使用程序的具体代码,确定该代码的运行周期,然后确定内存泄露对象分配给使用程序的最长使用时长,使最长使用时长大于或等于使用程序的运行周期。
这里,多次运行该使用程序,确定该使用程序的代码在每一次运行的运行完成时长,将多次运行完成时长的平均值确定为该使用程序最终的运行完成时长,考虑一定的运行波动的情况下,将最终的运行完成时长的n倍作为该使用程序的运行周期。
其中,n值不做具体限定,可以预设为任一数值。
例如,多次运行完成时长分别为2s、3s、4s,则多次运行完成时长的平均值为3s,则该使用程序的运行周期为3n。
进一步地,将内存泄露对象、使用程序、使用程序对应的起始时间、使用程序对应的最长使用时长对应存储到存储表中。
S105、按照第二预设时间间隔,根据使用程序对应的起始时间,确定使用程序使用该使用程序对应的内存泄露对象的已使用时长。
在本申请实施方式中,按照第二预设时间间隔,确定存储表中每一个使用程序使用该使用程序对应的内存泄露对象的已使用时长。
这里,将当前使用时间与使用程序对应的起始时间的时间差,作为使用程序使用该使用程序对应的内存泄露对象的已使用时长。
S106、判断已使用时长是否大于使用程序对应的最长使用时长;若已使用时长大于使用程序对应的最长使用时长,则确定使用程序为内存泄露程序。
在本申请实施方式中,判断已使用时长是否大于最长使用时长,若已使用时长大于使用程序对应的最长使用时长,判断使用程序是否已经释放使用程序对应的内存泄露对象;否则,使用程序为无内存泄漏程序。
进一步地,若使用程序已经释放使用程序对应的内存泄露对象,使用程序为无内存泄漏程序,并在存储表中删除所述使用程序。若使用程序没有释放使用程序对应的内存泄露对象,确定使用程序为内存泄露程序。
这里,判断使用程序是否已经释放使用程序对应的内存泄露对象,是为了防止因为存储表更新不及时,误以为该使用程序的已使用时长大于使用程序对应的最长使用时长。
本申请实施例提供了一种内存泄露的检测方法,该方法包括:按照第一预设时间间隔,获取操作系统已分配的多个空间大小的内存对象的分配数量;根据连续n次内存对象的分配数量的变化,确定内存泄露对象;确定内存泄露对象的使用程序;并确定操作系统将内存泄露对象分配给使用程序的起始时间、最长使用时长;最长使用时长为使用程序使用内存泄露对象的最长时长;按照第二预设时间间隔,根据使用程序对应的起始时间,确定使用程序使用该使用程序对应的内存泄露对象的已使用时长;判断已使用时长是否大于最长使用时长;若已使用时长大于使用程序对应的最长使用时长,则确定使用程序为内存泄露程序。本申请通过内存对象的分配数量确定内存泄露对象,并为使用该内存泄露对象的使用程序确定起始时间、最长使用时长,根据使用程序使用该使用程序对应的内存泄露对象的已使用时长,确定内存泄露程序,能够准确确定存在内存泄露的程序。
参照图2所示,为本申请实施例提供的另一种内存泄露的检测方法的流程示意图,下面对本申请实施例示例性的各步骤进行说明:
S201、确定内存泄露程序是否存在释放代码;若不存在释放代码,则内存泄露程序确定为最终的内存泄露程序。
S202、若存在释放代码,则内存泄露程序确定为无内存泄漏程序。
本申请实施例提供了另一种内存泄露的检测方法,通过确定内存泄露程序是否存在释放代,进一步确定该内存泄露程序是否存在内存泄露,使本申请在检测内存泄漏时更准确。
参照图3所示,为本申请实施例提供的一种内存泄露的检测装置的示意图,该内存泄露的检测装置包括:
获取模块301,用于按照第一预设时间间隔,获取操作系统已分配的多个空间大小的内存对象的分配数量;
确定模块302,用于根据连续n次内存对象的分配数量的变化,确定内存泄露对象;
确定模块302,还用于确定内存泄露对象的使用程序;
确定模块302,还用于确定操作系统将内存泄露对象分配给使用程序的起始时间、最长使用时长;最长使用时长为使用程序使用内存泄露对象的最长时长;
确定模块302,还用于按照第二预设时间间隔,根据使用程序对应的起始时间,确定使用程序使用该使用程序对应的内存泄露对象的已使用时长;
判断模块303,用于判断已使用时长是否大于使用程序对应的最长使用时长;
确定模块302,还用于若已使用时长大于使用程序对应的最长使用时长,则确定使用程序为内存泄露程序。
在一种可能的实施方式中,确定模块302,具体用于根据连续两次内存对象的分配数量,计算后一次内存对象的分配数量减去前一次内存对象的分配数量的差值;计算所有差值的平均值,得到目标值;若目标值大于预设阈值,则内存对象为内存泄露对象。
在一种可能的实施方式中,该装置还包括:存储模块304;
存储模块304,用于将内存泄露对象、使用程序、使用程序对应的起始时间、使用程序对应的最长使用时长对应存储到存储表中。
在一种可能的实施方式中,该装置还包括:删除模块305;
删除模块305,用于若使用程序已经释放使用程序对应的内存泄露对象,则使用程序为无内存泄漏程序,并在存储表中删除使用程序。
在一种可能的实施方式中,确定模块302,还用于确定内存泄露程序是否存在释放代码;
确定模块302,还用于若不存在释放代码,则内存泄露程序确定为最终的内存泄露程序;
确定模块302,还用于若存在释放代码,则内存泄露程序确定为无内存泄漏程序。
在一种可能的实施方式中,确定模块302,具体用于确定使用程序的代码的运行周期;根据运行周期,确定内存泄露对象分配给使用程序的最长使用时长;最长使用时长大于或等于运行周期。
本申请实施例提供了一种内存泄露的检测装置,该装置包括:获取模块301,用于按照第一预设时间间隔,获取操作系统已分配的多个空间大小的内存对象的分配数量;确定模块302,用于根据连续n次内存对象的分配数量的变化,确定内存泄露对象;确定模块302,还用于确定内存泄露对象的使用程序;确定模块302,还用于确定操作系统将内存泄露对象分配给使用程序的起始时间、最长使用时长;最长使用时长为使用程序使用内存泄露对象的最长时长;确定模块302,还用于按照第二预设时间间隔,根据使用程序对应的起始时间,确定使用程序使用该使用程序对应的内存泄露对象的已使用时长;判断模块303,用于判断已使用时长是否大于最长使用时长;确定模块302,还用于若已使用时长大于使用程序对应的最长使用时长,则确定使用程序为内存泄露程序。本申请通过内存对象的分配数量确定内存泄露对象,并为使用该内存泄露对象的使用程序确定起始时间、最长使用时长,根据使用程序使用该使用程序对应的内存泄露对象的已使用时长,确定内存泄露程序,能够准确确定存在内存泄露的程序。
如图4所示,本申请实施例提供的一种电子设备400,包括:处理器401、存储器402和总线,存储器402存储有处理器401可执行的机器可读指令,当电子设备运行时,处理器401与存储器402之间通过总线通信,处理器401执行机器可读指令,以执行如上述内存泄露的检测方法的步骤。
具体地,上述存储器402和处理器401能够为通用的存储器和处理器,这里不做具体限定,当处理器401运行存储器402存储的计算机程序时,能够执行上述内存泄露的检测方法。
对应于上述内存泄露的检测方法,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述内存泄露的检测方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述信息处理方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种内存泄露的检测方法,其特征在于,所述内存泄露的检测方法包括:
按照第一预设时间间隔,获取操作系统已分配的多个空间大小的内存对象的分配数量;
根据连续n次所述内存对象的分配数量的变化,确定内存泄露对象;
确定所述内存泄露对象的使用程序;并确定所述操作系统将所述内存泄露对象分配给所述使用程序的起始时间、最长使用时长;所述最长使用时长为所述使用程序使用所述内存泄露对象的最长时长;
按照第二预设时间间隔,根据所述使用程序对应的起始时间,确定所述使用程序使用所述使用程序对应的内存泄露对象的已使用时长;
判断所述已使用时长是否大于所述使用程序对应的最长使用时长;
若所述已使用时长大于所述使用程序对应的最长使用时长,则确定所述使用程序为内存泄露程序。
2.根据权利要求1所述的内存泄露的检测方法,其特征在于,所述根据连续n次所述内存对象的分配数量的变化,确定内存泄露对象,包括:
根据连续两次所述内存对象的分配数量,计算后一次所述内存对象的分配数量减去前一次所述内存对象的分配数量的差值;
计算所有所述差值的平均值,得到目标值;
若所述目标值大于预设阈值,则所述内存对象为内存泄露对象。
3.根据权利要求1所述的内存泄露的检测方法,其特征在于,在所述根据所述使用程序对应的起始时间,确定所述使用程序使用所述使用程序对应的内存泄露对象的已使用时长之前,所述方法还包括:
将所述内存泄露对象、所述使用程序、所述使用程序对应的起始时间、所述使用程序对应的最长使用时长对应存储到存储表中。
4.根据权利要求3所述的内存泄露的检测方法,其特征在于,在所述确定所述使用程序为内存泄露程序之前,所述方法还包括:
若所述使用程序已经释放所述使用程序对应的内存泄露对象,则所述使用程序为无内存泄漏程序,并在所述存储表中删除所述使用程序。
5.根据权利要求1所述的内存泄露的检测方法,其特征在于,所述方法还包括:
确定所述内存泄露程序是否存在释放代码;
若不存在释放代码,则所述内存泄露程序确定为最终的内存泄露程序;
若存在释放代码,则所述内存泄露程序确定为无内存泄漏程序。
6.根据权利要求1所述的内存泄露的检测方法,其特征在于,确定所述操作系统将所述内存泄露对象分配给所述使用程序的最长使用时长,包括:
确定所述使用程序的代码的运行周期;
根据所述运行周期,确定所述内存泄露对象分配给所述使用程序的最长使用时长;所述最长使用时长大于或等于所述运行周期。
7.一种内存泄露的检测装置,其特征在于,所述内存泄露的检测装置包括:
获取模块,用于按照第一预设时间间隔,获取操作系统已分配的多个空间大小的内存对象的分配数量;
确定模块,用于根据连续n次所述内存对象的分配数量的变化,确定内存泄露对象;
所述确定模块,还用于确定所述内存泄露对象的使用程序;
所述确定模块,还用于确定所述操作系统将所述内存泄露对象分配给所述使用程序的起始时间、最长使用时长;所述最长使用时长为所述使用程序使用所述内存泄露对象的最长时长;
所述确定模块,还用于按照第二预设时间间隔,根据所述使用程序对应的起始时间,确定所述使用程序使用所述使用程序对应的内存泄露对象的已使用时长;
判断模块,用于判断所述已使用时长是否大于所述使用程序对应的最长使用时长;
所述确定模块,还用于若所述已使用时长大于所述使用程序对应的最长使用时长,则确定所述使用程序为内存泄露程序。
8.根据权利要求7所述的内存泄露的检测装置,其特征在于,所述确定模块,具体用于:
根据连续两次所述内存对象的分配数量,计算后一次所述内存对象的分配数量减去前一次所述内存对象的分配数量的差值;
计算所有所述差值的平均值,得到目标值;
若所述目标值大于预设阈值,则所述内存对象为内存泄露对象。
9.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至6任一项所述的内存泄露的检测方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至6任一项所述的内存泄露的检测方法的步骤。
CN202210888177.4A 2022-07-27 2022-07-27 一种内存泄露的检测方法、装置、电子设备及存储介质 Active CN114968645B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210888177.4A CN114968645B (zh) 2022-07-27 2022-07-27 一种内存泄露的检测方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210888177.4A CN114968645B (zh) 2022-07-27 2022-07-27 一种内存泄露的检测方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN114968645A CN114968645A (zh) 2022-08-30
CN114968645B true CN114968645B (zh) 2022-10-11

Family

ID=82969532

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210888177.4A Active CN114968645B (zh) 2022-07-27 2022-07-27 一种内存泄露的检测方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114968645B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010043176A1 (zh) * 2008-10-17 2010-04-22 华为技术有限公司 内存泄漏的检测方法和装置
CN103064784A (zh) * 2012-11-29 2013-04-24 福建师范大学 面向Xen环境的运行时内存泄漏检测方法及其实现系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257692B2 (en) * 2003-10-01 2007-08-14 Lakeside Software, Inc. Apparatus and method for detecting memory leaks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010043176A1 (zh) * 2008-10-17 2010-04-22 华为技术有限公司 内存泄漏的检测方法和装置
CN103064784A (zh) * 2012-11-29 2013-04-24 福建师范大学 面向Xen环境的运行时内存泄漏检测方法及其实现系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
C程序内存泄漏智能化检测方法;朱亚伟等;《软件学报》;20190515(第05期);全文 *

Also Published As

Publication number Publication date
CN114968645A (zh) 2022-08-30

Similar Documents

Publication Publication Date Title
JP4684607B2 (ja) オブジェクト指向プログラムの動的メモリ管理方法及び装置
JP4116877B2 (ja) ヒープサイズ自動最適化処理方法,ヒープサイズ自動最適化装置およびそのプログラム
US10909029B2 (en) Managing memory in a computer system
US7418568B2 (en) Memory management technique
CN111061752B (zh) 数据处理方法、装置及电子设备
CN110908865A (zh) 内存泄漏监控方法、装置及电子设备
CN112667405B (zh) 信息处理方法、装置、设备及存储介质
CN111177144A (zh) 表同步方法、装置、设备、存储介质及系统
CN109977373B (zh) 标识号分配方法、标识号回收方法及装置
CN114968645B (zh) 一种内存泄露的检测方法、装置、电子设备及存储介质
US20130117275A1 (en) Index monitoring system, index monitoring method and program
CN111666150A (zh) 存储空间的分配方法、装置、终端及计算机可读存储介质
CN111162792A (zh) 一种电力负荷数据的压缩方法及装置
US10585620B2 (en) Storage monitoring system for monitoring components in a storage system in a distributed manner
CN113515428B (zh) 一种内存监控方法、终端、服务器、设备以及存储介质
CN112463051B (zh) 一种电池存储系统的管理方法及数据存储方法
CN110008020A (zh) 内存管理方法、装置、电子设备及计算机可读存储介质
CN107273283B (zh) 一种自动化软件检测方法及装置
CN110659194A (zh) 一种动态内存检测的方法、装置及存储介质
KR101669762B1 (ko) 비휘발성 메모리의 메모리 누수 복구 방법 및 장치
CN110795744A (zh) 一种异常信息的定位方法、系统、电子设备及存储介质
CN110716939B (zh) 数据管理方法、电子设备、系统及介质
CN109471813A (zh) 一种数据插入方法及相关装置
CN110674586B (zh) 数据处理方法及装置
CN115190089B (zh) 一种报文存储方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information

Inventor after: Pang Feixiang

Inventor after: Luo Xin

Inventor after: Ma Lina

Inventor before: Pang Feixiang

Inventor before: Yan Long

Inventor before: Luo Xin

Inventor before: Ma Lina

CB03 Change of inventor or designer information
CP03 Change of name, title or address

Address after: Room 711C, 7th Floor, Building A, Building 1, Yard 19, Ronghua Middle Road, Beijing Economic and Technological Development Zone, Beijing 100176

Patentee after: Beijing Zhongke Flux Technology Co.,Ltd.

Address before: Room 711C, 7th Floor, Building A, Building 1, Yard 19, Ronghua Middle Road, Beijing Economic and Technological Development Zone, Beijing 100176

Patentee before: Beijing Ruixin high throughput technology Co.,Ltd.

CP03 Change of name, title or address