掌桥专利:专业的专利平台
掌桥专利
首页

内存泄露检测方法、装置、电子设备及介质

文献发布时间:2023-06-19 11:29:13


内存泄露检测方法、装置、电子设备及介质

技术领域

本发明涉及计算机技术领域,尤其是涉及一种内存泄露检测方法、装置、电子设备及介质。

背景技术

在计算机科学中,内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

在相关技术中,为避免内存泄露导致系统瘫痪,通常需要对系统进行内存泄露的检测。具体由经验丰富的检测人员进行数据分析以得到检测结果,但是,该检测方式的处理效率不高且可能存在漏查等情况。

目前针对相关技术中人工检测内存泄露的方式具有处理效率和准确度不高的问题,尚未提出有效的解决方案。

发明内容

本申请实施例提供了一种内存泄露检测方法、装置、电子装置及介质,其提高了内存泄露检测的处理效率和准确度。

第一方面,本申请实施例提供了一种内存泄露检测方法,所述方法包括:

接收触发信号,响应所述触发信号确定检测时段;

获取第一数据集,所述第一数据集包括两个以上的第一数据,所述第一数据为采集时间落于所述检测时段内的内存使用量;

基于所述第一数据集判断内存使用量指标的整体趋势在所述检测时段内是否为上升,若是,则获取第二数据集,所述第二数据集包括两个以上的第二数据,所述第二数据为采集时间落于所述检测时段内的CPU使用率;

基于所述第二数据集判断CPU使用率指标的整体趋势在所述检测时段内是否为上升,若否,则生成与所述内存泄露对应的报警信号。

在其中一些实施例中,在判定内存使用量指标的整体趋势在所述检测时段内为上升的情况下,所述方法还包括:

获取第三数据集,所述第三数据集包括两个以上的第三数据,所述第三数据为采集时间落于所述检测时段内的网络流量;

基于所述第三数据集判断网络流量指标的整体趋势在所述检测时段内是否为上升,若否,则生成与所述内存泄露对应的报警信号。

在其中一些实施例中,所述方法包括:

采用监测公式组计算任意数据集的趋势值,所述监测公式组包括:

在所述趋势值大于0的情况下,则所述任意数据集的整体趋势为上升,在所述趋势值小于0的情况下,则所述任意数据集的整体趋势为下降。

在其中一些实施例中,所述方法还包括:

采用校验公式组计算所述任意数据集的校验值,所述校验公式组包括:

对于所述第二数据集或所述第三数据集,在C≤F的情况下,则禁止基于所述第二数据集或所述第三数据集生成与所述内存泄露对应的报警信号。

在其中一些实施例中,在判定内存使用量指标的整体趋势在所述检测时段内为上升的情况下,所述方法还包括:

获取在所述检测时段内各个业务类型所增加的业务量,其中,各个业务类型分别与所述CPU使用率指标或所述网络流量指标相关联;

将业务量增加最大的业务类型记为参考类型,与所述参考类型关联的指标在整体趋势上执行判断操作的优先级高于不与所述参考类型关联的指标。

在其中一些实施例中,所述报警信号携带有所述参考类型,所述报警信号还携带有所述内存使用量指标和/或所述网络流量在所述检测时段内的整体趋势。

在其中一些实施例中,在生成与所述内存泄露对应的报警信号的情况下,所述方法还包括:结束所述方法。

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

接收模块,用于接收触发信号,响应所述触发信号确定检测时段;

获取模块,用于获取第一数据集,所述第一数据集包括两个以上的第一数据,所述第一数据为采集时间落于所述检测时段内的内存使用量;

第一判断模块,用于基于所述第一数据集判断内存使用量指标的整体趋势在所述检测时段内是否为上升,若是,则获取第二数据集,所述第二数据集包括两个以上的第二数据,所述第二数据为采集时间落于所述检测时段内的CPU使用率;

第二判断模块,用于基于所述第二数据集判断CPU使用率指标的整体趋势在所述检测时段内是否为上升,若否,则生成与所述内存泄露对应的报警信号。

第三方面,本申请实施例提供了一种电子装置,其包括存储器和处理器,所处存储器中存储有计算机程序,所述处理器被设置为执行所述计算机程序时实现如上述第一方面所述的内存泄露检测方法。

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

相比于相关技术,本发明的有益效果在于:由于内存使用量指标与CPU使用率指标在检测时段内的整体趋势应当是一致的,因此,在内存使用量指标在检测时段内的整体趋势为上升、CPU使用率指标在检测时段内的整体趋势为下降的情况下,则可以判定被检测设备存在内存泄露的情况,并发出报警信号以做提醒,从而实现内存泄露的检测;由计算机程序执行该方法,不仅可以提高内存泄露检测的处理效率,还可以有效地避免漏查以提高内存泄露检测的准确度。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是本申请实施例所示内存泄露检测方法的流程图;

图2是本申请实施例所示内存泄露检测方法另一种实现方式的流程图;

图3是本申请实施例所示内存泄露检测装置的结构框图;

图4是本申请实施例所示电子设备的结构框图。

附图标记说明:31、接收模块;32、获取模块;33、第一判断模块;34、第二判断模块。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。

在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。

本实施例提供了一种内存泄露检测方法,旨在相关技术中人工检测内存泄露的方式具有处理效率和准确度不高的问题。

图1是本申请实施例所示内存泄露检测方法的流程图,参照图1所示,本方法包括步骤S101至步骤S106。

步骤S101、接收触发信号,响应触发信号确定检测时段。

步骤S102、获取第一数据集。第一数据集包括两个以上的第一数据,第一数据为采集时间落于检测时段内的内存使用量。

步骤S103、基于第一数据集判断内存使用量指标的整体趋势在检测时段内是否为上升,若是,则执行步骤S104。

步骤S104、获取第二数据集。第二数据集包括两个以上的第二数据,第二数据为采集时间落于检测时段内的CPU使用率。

步骤S105、基于第二数据集判断CPU使用率指标的整体趋势在检测时段内是否为上升,若否,则执行步骤S106;若是,则可以不做处理。

步骤S106、生成与内存泄露对应的报警信号。

值得说明的是,该方法的步骤可以是基于执行设备完成的。具体地,该执行设备可以为服务器、云服务器、用户端以及处理器等设备,但该执行设备不限于上述类型,只要可以获取被检测设备的相应数据即可。

综上所示,由于内存使用量指标与CPU使用率指标在检测时段内的整体趋势应当是一致的,因此,在内存使用量指标在检测时段内的整体趋势为上升、CPU使用率指标在检测时段内的整体趋势为下降的情况下,则可以判定相应设备存在内存泄露的情况,并发出报警信号以做提醒,从而实现内存泄露的检测;由计算机程序执行该方法,不仅可以提高内存泄露检测的处理效率,还可以有效地避免漏查以提高内存泄露检测的准确度。

作为可选的实施例,对于步骤S101,在此并不限定触发信号的生成方式,其可以基于人工操作配合生成,也可以通过定时器配合生成。

该检测时段的时长在此也不做限定,其可以根据实际情况进行调整。在此值得说明的是,该检测时段的任意时间点应当与该触发信号的接收时间存在联系,例如:该触发信号的接收时间可以作为检测时段的起始时间、终止时间、中间时间等中的任意一个,可以理解,该触发信号的接收时间优选作为检测时段的终止时间。综上,在该步骤中可以基于触发信号的接收时间确定检测时段。

作为可选的实施例,对于步骤S102,在被检测设备为执行设备的情况下,则执行设备可以直接读取存储的第一数据集,在被检测设备与执行设备通信连接的情况下,则该执行设备可以通过访问相应的API接口自被检测设备获取该第一数据集。

可以理解,该第一数据由被检测设备采集并保存,第一数据集内的第一数据按照采集时间进行顺位排列,且采样时间间隔优选相同,例如:检测时段的时长为1h,采样时间间隔为3min。在此值得说明的是,在触发信号的接收时间作为检测时段的起始时间的情况下,则被检测设备需要持续采集内存使用量,其增加了被检测设备的运行压力,但是,该技术方案可以使得本方法快速地进入步骤S103,即提高了内存泄露检测的处理效率;在触发信号的接收时间作为检测时段的终止时间的情况下,则被检测设备并不需要持续采集内存使用量,其降低了被检测设备的运行压力,但是,该技术方案可以使得本方法需要经过检测时段之后才能进入步骤S103,即影响了内存泄露检测的处理效率。

作为可选的实施例,对于步骤S103,该整体趋势可以为上升、不变、下降中的任意一种,该内存使用量指标整体趋势的计算过程在此不做限定,只要是采用第一数据集得到且对应检测时段即可。

作为可选的实施例,对于步骤S104和步骤S105,该第二数据集可以参照第一数据集的相关说明,在此不再赘述。优选的,被检测设备在接收采集信号的情况下,保存内存使用量作为第一数据,并同时保存CPU使用率作为第二数据。需要说明的是,内存使用量指标整体趋势所使用的第一数据的数量应当与CPU使用率指标整体趋势所使用的第二数据的数量相同,且二者的采集时间也应当对应相同。

作为可选的实施例,对于步骤S106,在生成报警信号之后,执行设备可以响应报警信号以邮件、短信、电话、弹窗等方式通知相应的工作人员以告知被检测设备发生了内存泄露。

作为可选的实施例,图2为本申请实施例所示内存泄露检测方法另一种实现方式的流程图,参照图2所示,该方法可以包括步骤S201至步骤S208。其中步骤S201至步骤S206可以参照步骤S101至步骤S106的相关说明,具体在此不再赘述。

步骤S207、获取第三数据集。第三数据集包括两个以上的第三数据,第三数据为采集时间落于检测时段内的网络流量。该第三数据集可以参照第二数据集的相关说明,具体在此不再赘述。该步骤S207是在步骤S203中判定为是的情况在执行,但是,步骤S207与步骤S208的组合和步骤S204与步骤S205的组合这二者并不限定执行顺序。

步骤S208、基于第三数据集判断网络流量指标的整体趋势在检测时段内是否为上升,若否,则执行步骤S206。可以理解,该网络流量指标整体趋势的计算过程可以与上述内存使用量指标整体趋势的计算过程相同。

由于内存使用量指标与网络流量指标在检测时段内的整体趋势应当是一致的,因此,只有在内存使用量指标、CPU使用率指标以及网络流量指标的整体趋势均为上升,则可以视为被检测设备未发生内存泄露,反之,在内存使用量指标整体趋势均为上升,且CPU使用率指标和网络流量指标中任意一个的整体趋势不为上升,则可以视为被检测设备发生内存泄露,则执行设备配合生成报警信号。由此可见,通过CPU使用率指标和网络流量指标这两个维度对内存泄露进行检测,从而提高内存泄露检测的准确性。

进一步地,在步骤S203判定为是的情况下,该方法可以包括分流步骤,在此值得说明的是,该分流步骤是在步骤S204和步骤S207之前执行的。具体地,该分流步骤可以包括以下步骤。

获取在检测时段内各个业务类型所增加的业务量,其中,各个业务类型分别与CPU使用率指标或网络流量指标相关联。可以理解,各个业务均是具有业务类型的,该业务类型可以包括视频、音频、地图导航、数据分析、图像处理等,其中,地图导航、数据分析、图像处理等与CPU使用率指标相关联,视频和音频等与网络流量指标相关联。

将业务量增加最大的业务类型记为参考类型,与参考类型关联的指标在整体趋势上执行判断操作的优先级高于不与参考类型关联的指标。即在参考类型与CPU使用率相关联的情况下,则优先执行步骤S204和步骤S205,并在步骤S205判定为是时,执行步骤S207和步骤S208;在参考类型与网络流量指标相关联的情况下,则优先执行步骤S207和步骤S208,并在步骤S208判定为是的情况下,执行步骤S204和步骤S205。

在此值得说明的是,在各个业务类型的业务增加量相同的情况下,则将业务量最大的业务类型记为参考类型,并配合执行后续步骤。

通过本技术方案,由于内存泄露与业务量的增加有关,因此,根据参考类型对CPU使用率指标和网络流量指标的执行顺序进行调整,以便于尽快检测出内存泄露,即提高内存泄露检测的处理效率。

进一步地,报警信号携带有参考类型,报警信号还携带有内存使用量指标和/或网络流量在检测时段内的整体趋势。以便于工作人员可以初步确定与内存泄露相关的业务类型。

作为可选的实施例,在生成与内存泄露对应的报警信号的情况下,方法还包括:结束本方法。例如,参照图2所示,在步骤S205判定为否的情况下,则配合执行步骤S206,并停止执行步骤S207和步骤S208,反之,在步骤S208判定为否的情况下,则配合执行步骤S206,并停止执行步骤S204和步骤S205。在此值得说明的是,本方法仅是用于检测内存泄露,并不针对内存泄漏进行维修,则在生成报警信号之后便可以结束本方法,以降低执行设备的运行压力。

作为可选的实施例,内存使用量指标、CPU使用率指标、网络流量指标的整体趋势的计算过程均可以采用趋势计算步骤,其可以包括以下步骤。

采用监测公式组计算任意数据集的趋势值,监测公式组包括:

在趋势值大于0的情况下,则任意数据集的整体趋势为上升,在趋势值小于0的情况下,则任意数据集的整体趋势为下降。

可以理解,在内存使用量指标的计算过程中,采用第一数据集;在CPU使用率指标的计算过程中,采用第二数据集;在网络流量指标的计算过程中,采用第三数据集。

进一步地,该趋势计算步骤还可以包括以下步骤:采用校验公式组计算任意数据 集的校验值,校验公式组包括:

对于第二数据集或第三数据集,在C≤F的情况下,则禁止基于第二数据集或第三数据集生成与内存泄露对应的报警信号。在此以CPU使用率指标为例进行说明,该CPU使用率指标对应第二数据集,相应地,基于第二数据集可以得到C和F,在C>F的情况下,则允许进入步骤S206,在C≤F的情况下,则禁止进入步骤S206,可以理解,该过程并不影响步骤S207及其后续步骤。

通过本技术方案,由于Z值只是一个概率值,在任意指标的上升趋势不明显时,出于控制误报率的考虑,通过对Z和F的比较以实现对Z的双尾检测,从而提高内存泄露检测的准确度。

本实施例还提供了一种内存泄露检测装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图3是根据本申请实施例的内存泄露检测装置的结构框图,如图3所示,该装置包括接收模块31、获取模块32、第一判断模块33、第二判断模块34。

接收模块31,用于接收触发信号,响应触发信号确定检测时段。

获取模块32,用于获取第一数据集,第一数据集包括两个以上的第一数据,第一数据为采集时间落于检测时段内的内存使用量。

第一判断模块33,用于基于第一数据集判断内存使用量指标的整体趋势在检测时段内是否为上升,若是,则获取第二数据集,第二数据集包括两个以上的第二数据,第二数据为采集时间落于检测时段内的CPU使用率。

第二判断模块,用于基于第二数据集判断CPU使用率指标的整体趋势在检测时段内是否为上升,若否,则生成与内存泄露对应的报警信号。

需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。

本实施例还提供了一种电子设备,图4是本申请实施例所示电子设备的结构框图,参照图4所示,该电子设备包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行实现上述实施例中的任意一种内存泄露检测方法,具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

可选地,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

另外,结合上述实施例中的内存泄露检测方法,本申请实施例五可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种内存泄露检测方法,该方法包括:

接收触发信号,响应触发信号确定检测时段;

获取第一数据集,第一数据集包括两个以上的第一数据,第一数据为采集时间落于检测时段内的内存使用量;

基于第一数据集判断内存使用量指标的整体趋势在检测时段内是否为上升,若是,则获取第二数据集,第二数据集包括两个以上的第二数据,第二数据为采集时间落于检测时段内的CPU使用率;

基于第二数据集判断CPU使用率指标的整体趋势在检测时段内是否为上升,若否,则生成与内存泄露对应的报警信号。

如图4所示,以一个处理器为例,电子设备中的处理器、存储器、输入装置和输出装置可以通过总线或其他方式连接,图4中以通过总线连接为例。

存储器作为一种计算机可读存储介质,可以包括高速随机存取存储器、非易失性存储器等,可用于存储操作系统、软件程序、计算机可执行程序和数据库,如本发明实施例一的内存泄露检测方法对应的程序指令/模块,还可以包括内存,可用于为操作系统和计算机程序提供运行环境。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。

处理器用于提供计算和控制能力,可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。处理器通过运行存储在存储器中的计算机可执行程序、软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现实施例一的内存泄露检测方法。

该电子设备的输出装置可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

该电子设备还可包括网络接口/通信接口,该电子设备的网络接口用于与外部的终端通过网络连接通信。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)、DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

值得注意的是,在该内存泄露检测方法的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。

以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 内存泄露检测方法、装置、电子设备及介质
  • 内存泄露的检测方法、装置、电子设备及计算机存储介质
技术分类

06120112942059