CN112214394A - 内存泄漏检测方法、装置和设备 - Google Patents
内存泄漏检测方法、装置和设备 Download PDFInfo
- Publication number
- CN112214394A CN112214394A CN202010909902.2A CN202010909902A CN112214394A CN 112214394 A CN112214394 A CN 112214394A CN 202010909902 A CN202010909902 A CN 202010909902A CN 112214394 A CN112214394 A CN 112214394A
- Authority
- CN
- China
- Prior art keywords
- memory
- target process
- occupation information
- time interval
- determining
- 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.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 25
- 238000000034 method Methods 0.000 claims abstract description 257
- 230000008569 process Effects 0.000 claims abstract description 216
- 230000002159 abnormal effect Effects 0.000 claims abstract description 10
- 238000004590 computer program Methods 0.000 claims description 20
- 239000000126 substance Substances 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 9
- 230000006870 function Effects 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请适用于计算机技术领域,提供了内存泄漏检测方法,包括:当系统启动时,按照预设数据采集周期采集系统中的目标进程的内存占用信息;当检测到系统运行异常时,根据内存占用信息确定目标进程的内存泄漏状态。本申请可以通过自动采集系统中的目标进程运行时的内存占用信息,来确定目标进程的内存泄漏状态,从而确定目标进程是否存在内存泄漏。可以实现在系统运行异常时自动判断目标进程是否存在内存泄漏,有助于提高判断目标进程是否存在内存泄漏的效率。
Description
技术领域
本申请属于计算机技术领域,尤其涉及一种内存泄漏检测方法、装置和设备。
背景技术
内存泄漏(Memory Leak)是指系统动态分配给程序的内存,没有被程序释放或程序无法释放。内存泄漏会造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。进程(Process)是程序的基本执行实体,系统中通常可以具有多个进程。
相关技术中,通常是进程运行时,研发人员采用预设内存获取工具(如,dumpsysmemiinfo,procrank等)获取进程占用的内存,然后采用所获取的内存通过人工判断的方式,确定进程是否存在内存泄漏。由于通过人工判断的方式效率较低。因此,相关技术中,需要提高判断进程是否存在内存泄漏的效率。
发明内容
本申请实施例提供了内存泄漏检测方法、装置和设备,旨在解决相关技术中通过人工判断的方式确定进程是否存在内存泄漏,效率较低的问题。
第一方面,本申请实施例提供了一种内存泄漏检测方法,该方法包括:
当系统启动时,按照预设数据采集周期采集系统中的目标进程的内存占用信息;
当检测到系统运行异常时,根据内存占用信息确定目标进程的内存泄漏状态。
进一步地,根据内存占用信息确定目标进程的内存泄漏状态,包括:
选取对应采集时间属于第一时间区间的内存占用信息,以及选取对应采集时间属于第二时间区间的内存占用信息,其中,第一时间区间为以目标进程启动的时间点为起点且以第一预设时长为区间长度的时间区间,第二时间区间为以目标进程终止的时间点为终点且以第二预设时长为区间长度的时间区间;
根据对应采集时间属于第一时间区间的内存占用信息的均值和对应采集时间属于第二时间区间的内存占用信息的均值,确定目标进程的内存泄漏状态。
进一步地,根据对应采集时间属于第一时间区间的内存占用信息的均值和对应采集时间属于第二时间区间的内存占用信息的均值,确定目标进程的内存泄漏状态,包括:
将对应采集时间属于第二时间区间的内存占用信息的均值除以对应采集时间属于第一时间区间的内存占用信息的均值,得到目标进程的内存增长率;
当内存增长率大于预设增长率阈值时,确定目标进程处于内存泄漏的状态。
进一步地,根据对应采集时间属于第一时间区间的内存占用信息的均值和对应采集时间属于第二时间区间的内存占用信息的均值,确定目标进程的内存泄漏状态,还包括:
当内存增长率小于或等于预设增长率阈值时,确定目标进程处于非内存泄漏的状态。
进一步地,在按照预设数据采集周期采集系统中的目标进程的内存占用信息之后,方法还包括:
根据内存占用信息生成并输出内存曲线图,其中,内存曲线图的横坐标为以时间为顺序的采集时间,纵坐标为与采集时间对应的内存占用信息。
进一步地,根据内存占用信息生成并输出内存曲线图,包括:
在满足预先设定的图生成条件时,根据内存占用信息生成并输出内存曲线图;其中,
预先设定的图生成条件包括以下至少一项:
采集到新的内存占用信息;
到达预设数据输出周期。
进一步地,在根据内存占用信息确定目标进程的内存泄漏状态之后,方法还包括:
向目标终端发送用于描述目标进程的内存泄漏状态的信息。
进一步地,根据内存占用信息确定目标进程的内存泄漏状态,包括:
对内存占用信息进行格式化处理,以及根据格式化后的内存占用信息确定目标进程的内存泄漏状态。
第二方面,本申请实施例提供了一种内存泄漏检测装置,该装置包括:
数据采集单元,用于当系统启动时,按照预设数据采集周期采集系统中的目标进程的内存占用信息;
状态确定单元,用于当检测到系统运行异常时,根据内存占用信息确定目标进程的内存泄漏状态。
第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述内存泄漏检测方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现上述内存泄漏检测方法的步骤。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述第一方面中任一项的内存泄漏检测方法。
本申请实施例与相关技术相比存在的有益效果是:可以通过自动采集系统中的目标进程运行时的内存占用信息,来确定目标进程的内存泄漏状态,从而确定目标进程是否存在内存泄漏。可以实现在系统运行异常时自动判断目标进程是否存在内存泄漏,有助于提高判断目标进程是否存在内存泄漏的效率。
可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的内存泄漏检测方法的流程示意图;
图2是本申请另一实施例提供的内存泄漏检测方法的流程示意图;
图3是本申请一实施例提供的内存曲线图;
图4是本申请又一实施例提供的内存泄漏检测方法的流程示意图;
图5是本申请一实施例提供的内存泄漏检测装置的结构示意图;
图6是本申请一实施例提供的电子设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
为了说明本申请的技术方案,下面通过以下实施例来进行说明。
实施例一
请参阅图1,本申请实施例提供一种内存泄漏检测方法,包括:
步骤101,当系统启动时,按照预设数据采集周期采集系统中的目标进程的内存占用信息。
其中,上述目标进程可以是系统中的预先指定的进程。上述目标进程可以有一个也可以有多个。上述预设数据采集周期可以是预先设定的用于指示采集数据的周期的数值。作为示例,上述预设数据采集周期可以是10秒。上述内存占用信息通常是包括目标进程所占用的内存量的信息。实践中,上述内存占用信息还可以包括目标进程的其他信息,如,进程编号信息、进程优先级信息。作为示例,内存占用信息可以为“171004K:cameraserver(pid 246)”。其中,“171004K”为目标进程所占用的内存量,“K”为内存量的单位。“cameraserver”目标进程的名称,“pid 246”为分配给目标进程的临时编号。
在本实施例中,内存泄漏检测方法的执行主体可以是检测服务器,上述检测服务器可以是硬件也可以是软件。当检测服务器为硬件时,可以实现成提供各种检测服务的分布式服务器集群,也可以实现成单个服务器。当检测服务器为软件时,可以安装在上述所列举的服务器中。其可以实现成多个软件或软件模块,也可以实现成单个软件或软件模块,在此不做具体限定。需要指出的是,上述检测服务器通常用于检测系统中的进程是否存在内存泄漏。上述系统可以是各种操作系统,如Android、IOS、Unix、Linux、MacOS、Windows等。本实施例对操作系统的类型不做具体限定。
在本实施例中,由于系统启动时,系统的输入/输出接口(Input/OutputInterface,I/O接口)通常会发生电平变化。故上述执行主体可以通过检测系统的输入/输出接口的电平变化,检测到系统启动。
由于操作系统中的各进程所占用的内存量是随着时间动态变化的,且操作系统通常会记录各进程当前所占用的内存量。因此,上述执行主体可以采集到目标进程的包括内存量的内存占用信息。
实践中,上述执行主体可以通过执行预设脚本语言(如,Linux脚本语言),实现每间隔一个数据采集周期(如,10秒)提取目标进程的内存占用信息。作为示例,所执行的具体的脚本语言可以为:
上述脚本语言中,while[1]表示无限循环。data表示记录当前时间。busyboxfree表示导出当前系统总的内存占用情况。dumpsys meminfo表示导出当前系统中的进程的内存占用信息,sed表示提取Java进程的内存占用信息。其中,Java进程通常是指采用Java语言编写实现的进程。这里,只提取Java进程的内存占用信息,即,目标进程是Java进程。dumpsys meminfo|busybox sed-n'1,/Total PSS by OOM adjustment:/p'作为一个整体,表示从所有进程的内存占用信息中,提取各Java进程的内存占用信息。sleep 10表示间隔10秒,即数据采集周期为10秒。sdcard/meminfo表示将所获取的目标进程的内存占用信息存储至/sdcard/meminfo文件夹中。
步骤102,当检测到系统运行异常时,根据内存占用信息确定目标进程的内存泄漏状态。
其中,上述内存泄漏状态通常是用于指示进程是否出现内存泄漏的状态。上述内存泄漏状态通常包括内存泄漏的状态和非内存泄漏的状态。举例来说,若上述内存泄漏状态为内存泄漏的状态,则可以指示目标进程出现内存泄漏。若上述内存泄漏状态为非内存泄漏的状态,则可以指示目标进程没有出现内存泄漏。
在本实施例中,上述执行主体可以通过多种方式确定系统是否运行异常。作为示例,若系统当前的运行速度低于预设速度阈值,则可以认为系统运行异常。作为另一示例,若系统弹出对话框的频率大于预设频率,则可以认为系统运行异常。
在确定系统运行异常时,上述执行主体可以根据目标进程在不同时刻的内存占用信息确定目标进程的内存泄漏状态。举例来说,上述执行主体可以通过如下方式确定目标进程的内存泄漏状态:首先,从该目标进程的所有内存占用信息中选取对应采集时间最早的内存占用信息,以及选取对应采集时间最晚的内存占用信息。然后,计算对应采集时间最晚的内存占用信息中的内存量与对应采集时间最早的内存占用信息中的内存量的差值。最后,根据计算得到的差值确定目标进程的内存泄漏状态。具体地,若差值大于预设差距阈值,则确定目标进程的内存泄漏状态为内存泄漏的状态。反之,若差值小于或等于预设差距阈值,则确定目标进程的内存泄漏状态为非内存泄漏的状态。其中,上述预设差距阈值可以是预先设定的用于描述内存量变化的数值。如,上述预设差距阈值可以是100兆。
本实施例提供的方法,可以通过自动采集系统中的目标进程运行时的内存占用信息,来确定目标进程的内存泄漏状态,从而确定目标进程是否存在内存泄漏。可以实现在系统运行异常时自动判断目标进程是否存在内存泄漏,有助于提高判断目标进程是否存在内存泄漏的效率。
需要指出的是,若存在多个目标进程,则通常是针对每个目标进程,采用该目标进程的从启动到终止所采集的内存占用信息,对该目标进程是否存在内存泄漏进行判断。另外,进程在运行过程中会占用内存,且进程所占用的内存量通常是动态变化的。由于在进程存在内存泄漏时,该进程终止时所占用的内存量通常会比该进程启动时所占用的内存量大得多。因此,采用目标进程启动时的内存占用信息和目标进程终止时的内存占用信息,对目标进程的内存泄漏情况进行分析,有助于提高对目标进程的内存泄漏状态进行判断的准确率。
在本申请的各个实施例的可选的实现方式中,上述根据内存占用信息确定目标进程的内存泄漏状态,包括:
步骤一,选取对应采集时间属于第一时间区间的内存占用信息,以及选取对应采集时间属于第二时间区间的内存占用信息。
其中,第一时间区间为以目标进程启动的时间点为起点且以第一预设时长为区间长度的时间区间,第二时间区间为以目标进程终止的时间点为终点且以第二预设时长为区间长度的时间区间。
这里,针对任一目标进程,上述执行主体可以从采集得到的该目标进程的所有内存占用信息中,选取对应采集时间属于第一时间区间的内存占用信息,以及选取对应采集时间属于第二时间区间的内存占用信息。
这里,通过选取对应采集时间属于第一时间区间的内存占用信息,可以获取到目标进程启动后一段时间内的多个内存占用信息。通过选取对应采集时间属于第二时间区间的内存占用信息,可以获取到目标进程终止前一段时间内的多个内存占用信息。
需要指出的是,由于针对系统中的每一个进程,通常会具有用于指示该进程是否启动的启动参数。因此,上述执行主体可以查询目标进程的启动参数,通过分析所查询到的启动参数的取值,确定进程是否启动。作为示例,若目标进程的启动参数的取值为“on”,可以确定目标进程已启动。反之,若目标进程的启动参数的取值为“off”,可以确定目标进程未启动或已终止。作为另一示例,若目标进程的启动参数的取值为“1”,可以确定目标进程已启动。反之,若目标进程的启动参数的取值为“0”,可以确定目标进程未启动或已终止。需要指出的是,本申请对启动参数的取值的具体形式不做限定。
步骤二,根据对应采集时间属于第一时间区间的内存占用信息的均值和对应采集时间属于第二时间区间的内存占用信息的均值,确定目标进程的内存泄漏状态。
这里,为了便于描述,将对应采集时间属于第一时间区间的内存占用信息的均值,记作第一均值。以及将对应采集时间属于第二时间区间的内存占用信息的均值,记作第二均值。
上述执行主体可以对所得到的对应采集时间属于第一时间区间的多个内存占用信息进行均值计算,得到上述第一均值,以及对所得到的对应采集时间属于第二时间区间的多个内存占用信息进行均值计算,得到上述第二均值。
需要指出的是,本申请的各个实施例中,采用内存占用信息进行计算,通常是指采用内存占用信息所包括的内存量进行计算。如,上述对多个内存占用信息进行均值计算通常是指对多个内存占用信息所包括的多个内存量进行均值计算。
在得到上述第一均值和第二均值之后,上述执行主体可以采用多种方式确定目标进程的内存泄漏状态。作为示例,上述执行主体可以将第二均值减去第一均值,得到差距值,然后将差距值与预设差值进行比较,若差距值大于预设差值,则确定目标进程的内存泄漏状态为内存泄漏的状态。反之,若差距值小于或等于预设差值,则确定目标进程的内存泄漏状态为非内存泄漏的状态。其中,上述预设差值可以是预先设定的用于描述内存量变化的数值。
本实现方式中,目标进程启动后一段时间内的多个内存占用信息的均值,可以准确地描述目标进程刚启动时的内存占用情况。目标进程结束前一段时间内的多个内存占用信息的均值,可以准确地描述目标进程终止时的内存占用情况。采用第一均值和第二均值来确定目标进程的内存泄漏状态,有助于提高判断目标进程是否存在内存泄漏的准确率。
在一些可选的实现方式中,上述步骤二中,根据对应采集时间属于第一时间区间的内存占用信息的均值和对应采集时间属于第二时间区间的内存占用信息的均值,确定目标进程的内存泄漏状态,包括:
首先,将对应采集时间属于第二时间区间的内存占用信息的均值除以对应采集时间属于第一时间区间的内存占用信息的均值,得到目标进程的内存增长率。
然后,当内存增长率大于预设增长率阈值时,确定目标进程处于内存泄漏的状态。
其中,上述预设增长率阈值可以是预先设定的数值。由于存在内存泄漏时,进程终止时所占用的内存量通常会比该进程启动时所占用的内存量大,实践中,上述预设增长率阈值通常设置为大于或等于1。
可选地,根据对应采集时间属于第一时间区间的内存占用信息的均值和对应采集时间属于第二时间区间的内存占用信息的均值,确定目标进程的内存泄漏状态,还包括:当内存增长率小于或等于预设增长率阈值时,确定目标进程处于非内存泄漏的状态。
本实现方式中,通过将内存增长率与预设增长率阈值进行比较,来确定目标进程的内存泄漏状态。如,可以在内存增长率大于预设增长率阈值时,确定目标进程处于内存泄漏的状态。也可以在内存增长率小于或等于预设增长率阈值时,确定目标进程处于非内存泄漏的状态。由于目标进程的内存增长率,可以更准确地描述目标进程从启动到终止所占用的内存量的相对变化情况,采用将内存增长率与预设增长率阈值进行比较的方式确定目标进程是否存在内存泄漏,可以准确地确定目标进程是否存在内存泄漏,有助于进一步提高判断目标进程是否存在内存泄漏的准确率。
实施例二
本申请实施例提供一种内存泄漏检测方法,本实施例是对实施例一的进一步说明,与实施例一相同或相似的地方,具体可参见实施例一的相关描述,此处不再赘述。请参阅图2,本实施例中的内存泄漏检测方法,包括:
步骤201,当系统启动时,按照预设数据采集周期采集系统中的目标进程的内存占用信息。
在本实施例中,步骤201的具体操作与图1所示的实施例中步骤101的操作基本相同,在此不再赘述。
步骤202,根据内存占用信息生成并输出内存曲线图。
其中,内存曲线图的横坐标为以时间为顺序的采集时间,纵坐标为与采集时间对应的内存占用信息。
请参阅图3,图3示出了一种内存曲线图。如图3所示地,内存曲线图的横轴为时间轴,纵轴为内存占用信息所包括的内存量。
本实施例中,针对任一目标进程,上述执行主体可以采用当前采集得到的该目标进程的所有内存占用信息,生成上述内存曲线图。之后,上述执行主体可以输出所生成的内存曲线图。作为示例,上述执行主体可以通过如下方式输出内存曲线图:通过网络向目标终端发送内存曲线图。其中,上述目标终端通常是预先设定的终端。如,上述目标终端可以是研发人员的终端。
步骤203,当检测到系统运行异常时,根据内存占用信息确定目标进程的内存泄漏状态。
在本实施例中,步骤203的具体操作与图1所示的实施例中步骤102的操作基本相同,在此不再赘述。
本实施例中,在目标进程运行过程中,采用当前所得到的目标进程的所有内存占用信息生成内存曲线图,以及将所生成的内存曲线图输出。可以使得用户(如,目标终端的使用者)直观地、及时准确地获知目标进程的内存占用情况,从而直观地获知目标进程的内存走势。可以辅助判断目标进程是否存在内存泄漏,有助于进一步提高对目标进程的内存泄漏状态进行判断的准确率。
在本实施例的一些可选的实现方式中,根据内存占用信息生成并输出内存曲线图,包括:在满足预先设定的图生成条件时,根据内存占用信息生成并输出内存曲线图。
其中,上述图生成条件可以是各种条件。预先设定的图生成条件可以包括但不限于以下至少一项:采集到新的内存占用信息。到达预设数据输出周期。
其中,上述预设数据输出周期可以是预先设定的用于指示发送数据的周期的数值。实践中,预设数据输出周期通常大于上述预设数据采集周期。
本实现方式中,只有在当前情形满足图生成条件的情况下,才执行生成内存曲线图,以及向目标终端发送内存曲线图,可以减少不必要的计算资源的损耗,有助于节约计算资源。需要指出的是,在采集到新的内存占用信息下,将当前得到的目标进程的所有内存占用信息绘制得到内存曲线图,以及将所得到的内存曲线图输出,如,向目标终端发送,可以使得用户(如,目标终端的使用者)可以更加及时准确地获知目标进程的内存占用情况。在到达预设数据输出周期的情况下将当前得到的目标进程的所有内存占用信息绘制得到内存曲线图,以及将所得到的内存曲线图输出,如,向目标终端发送,可以进一步减少不必要的计算资源的损耗,有助于节约计算资源。
在本实施例的一些可选的实现方式中,在上述步骤203之后,上述内存泄漏检测方法还可以包括如下步骤:
向目标终端发送用于描述目标进程的内存泄漏状态的信息。
这里,上述执行主体可以通过网络向目标终端发送用于描述目标进程的内存泄漏状态的信息。本实现方式中,可以实现目标终端的使用者及时准确获知目标进程的内存泄漏状态,从而及时准确地获知目标进程是否存在内存泄漏。有助于实现目标终端的使用者基于收到的信息及时对存在内存泄漏的目标进程进行处理。
实施例三
本申请实施例提供一种内存泄漏检测方法,本实施例是对实施例一的进一步说明,与实施例一相同或相似的地方,具体可参见实施例一的相关描述,此处不再赘述。请参阅图4,本实施例中的内存泄漏检测方法,包括:
步骤401,当系统启动时,按照预设数据采集周期采集系统中的目标进程的内存占用信息。
在本实施例中,步骤401的具体操作与图1所示的实施例中步骤101的操作基本相同,在此不再赘述。
步骤402,当检测到系统运行异常时,对内存占用信息进行格式化处理,以及根据格式化后的内存占用信息确定目标进程的内存泄漏状态。
其中,上述对内存占用信息进行格式化处理,通常是指将内存占用信息所包括的内存量呈现在内存占用信息的指定位置。这样,可以便于对内存占用信息中的内存量的提取。
在本实施例中,在确定系统运行异常时,上述执行主体可以先对所采集到的各目标进程的所有内存占用信息分别进行格式化处理。然后,根据格式化后的所有内存占用信息确定各目标进程的内存泄漏状态。
作为一个示例,上述对内存占用信息进行格式化处理,可以包括:针对任一目标进程,将该目标进程在不同时刻的内存占用信息逐条写入逗号分隔值(Comma-SeparatedValues,CSV)文件中。其中,CSV文件通常是以纯文本的形式存储表格数据的文件。CSV文件是一个字符序列,CSV文件中可以写入任意数目条的记录。由于CSV文件可以以表格的形式呈现,CSV文件的表格形式的某一列通常具有同一属性。因此,可以通过直接提取表格中的内存量所在列实现提取到目标进程的所有内存占用信息所包括的内存量。可以提高对每条内存占用信息所包括的内存量的提取效率有,助于进一步提高对目标进程的内存泄漏状态进行判断的效率。
需要指出的是,由于上述执行主体通常只采用目标进程在各个时刻所占用的内存量来分析目标进程的内存泄漏情况。然而在提取目标进程的内存占用信息时,通常很难实现仅提取到内存量,实践中,通常会提取到内存量以及其他的一些与目标进程相关的信息,如进程编号信息、进程优先级信息等。因此,本实施例对每条内存占用信息先进行格式化,可以实现便于上述执行主体对内存占用信息中的内存量进行提取,从而提高对每条内存占用信息所包括的内存量的提取效率。从而进一步提高对目标进程的内存泄漏状态进行判断的效率。
实施例四
对应于上文实施例的内存泄漏检测方法,图5示出了本申请实施例提供的内存泄漏检测装置500的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图5,该装置包括:
数据采集单元501,用于当检测到目标进程启动时,按照预设数据采集周期采集目标进程的内存占用信息;
状态确定单元502,用于当检测到目标进程终止时,根据内存占用信息确定目标进程的内存泄漏状态。
在一个实施例中,状态确定单元502中,根据内存占用信息确定目标进程的内存泄漏状态,包括:
选取对应采集时间属于第一时间区间的内存占用信息,以及选取对应采集时间属于第二时间区间的内存占用信息,其中,第一时间区间为以目标进程启动的时间点为起点且以第一预设时长为区间长度的时间区间,第二时间区间为以目标进程终止的时间点为终点且以第二预设时长为区间长度的时间区间;
根据对应采集时间属于第一时间区间的内存占用信息的均值和对应采集时间属于第二时间区间的内存占用信息的均值,确定目标进程的内存泄漏状态。
在一个实施例中,根据对应采集时间属于第一时间区间的内存占用信息的均值和对应采集时间属于第二时间区间的内存占用信息的均值,确定目标进程的内存泄漏状态,包括:
将对应采集时间属于第二时间区间的内存占用信息的均值除以对应采集时间属于第一时间区间的内存占用信息的均值,得到目标进程的内存增长率;
当内存增长率大于预设增长率阈值时,确定目标进程处于内存泄漏的状态。
在一个实施例中,根据对应采集时间属于第一时间区间的内存占用信息的均值和对应采集时间属于第二时间区间的内存占用信息的均值,确定目标进程的内存泄漏状态,还包括:
当内存增长率小于或等于预设增长率阈值时,确定目标进程处于非内存泄漏的状态。
在一个实施例中,装置还包括:
图生成单元,用于根据内存占用信息生成并输出内存曲线图,其中,内存曲线图的横坐标为以时间为顺序的采集时间,纵坐标为与采集时间对应的内存占用信息。
在一个实施例中,图生成单元具体用于:
在满足预先设定的图生成条件时,根据内存占用信息生成并输出内存曲线图;其中,
预先设定的图生成条件包括以下至少一项:
采集到新的内存占用信息;
到达预设数据输出周期。
在一个实施例中,装置还包括:
信息发送单元,用于向目标终端发送用于描述目标进程的内存泄漏状态的信息。
在一个实施例中,状态确定单元502中,根据内存占用信息确定目标进程的内存泄漏状态,包括:
对内存占用信息进行格式化处理,以及根据格式化后的内存占用信息确定目标进程的内存泄漏状态。
本实施例提供的装置,可以通过自动采集系统中的目标进程运行时的内存占用信息,来确定目标进程的内存泄漏状态,从而确定目标进程是否存在内存泄漏。可以实现在系统运行异常时自动判断目标进程是否存在内存泄漏,有助于提高判断目标进程是否存在内存泄漏的效率。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
实施例五
图6为本申请一实施例提供的电子设备600的结构示意图。如图6所示,该实施例的电子设备600包括:至少一个处理器601(图6中仅示出一个处理器)、存储器602以及存储在存储器602中并可在至少一个处理器601上运行的计算机程序603,例如内存泄漏检测程序。处理器601执行计算机程序603时实现上述任意各个方法实施例中的步骤。处理器601执行计算机程序603时实现上述各个内存泄漏检测方法的实施例中的步骤。处理器601执行计算机程序603时实现上述各装置实施例中各模块/单元的功能,例如图5所示单元501至502的功能。
示例性的,计算机程序603可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器602中,并由处理器601执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序603在电子设备600中的执行过程。例如,计算机程序603可以被分割成数据采集单元,状态确定单元,各单元具体功能在上述实施例中已有描述,此处不再赘述。
电子设备600可以是服务器、台式电脑、平板电脑、云端服务器和移动终端等计算设备。电子设备600可包括,但不仅限于,处理器601,存储器602。本领域技术人员可以理解,图6仅仅是电子设备600的示例,并不构成对电子设备600的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如电子设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器601可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器602可以是电子设备600的内部存储单元,例如电子设备600的硬盘或内存。存储器602也可以是电子设备600的外部存储设备,例如电子设备600上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)等。进一步地,存储器602还可以既包括电子设备600的内部存储单元也包括外部存储设备。存储器602用于存储计算机程序以及电子设备所需的其他程序和数据。存储器602还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/电子设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/电子设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种内存泄漏检测方法,其中,所述方法包括:
当系统启动时,按照预设数据采集周期采集所述系统中的目标进程的内存占用信息;
当检测到系统运行异常时,根据所述内存占用信息确定所述目标进程的内存泄漏状态。
2.根据权利要求1所述的方法,其中,所述根据所述内存占用信息确定所述目标进程的内存泄漏状态,包括:
选取对应采集时间属于第一时间区间的内存占用信息,以及选取对应采集时间属于第二时间区间的内存占用信息,其中,所述第一时间区间为以所述目标进程启动的时间点为起点且以第一预设时长为区间长度的时间区间,所述第二时间区间为以所述目标进程终止的时间点为终点且以第二预设时长为区间长度的时间区间;
根据对应采集时间属于第一时间区间的内存占用信息的均值和对应采集时间属于第二时间区间的内存占用信息的均值,确定所述目标进程的内存泄漏状态。
3.根据权利要求2所述的方法,其中,所述根据对应采集时间属于第一时间区间的内存占用信息的均值和对应采集时间属于第二时间区间的内存占用信息的均值,确定所述目标进程的内存泄漏状态,包括:
将对应采集时间属于第二时间区间的内存占用信息的均值除以对应采集时间属于第一时间区间的内存占用信息的均值,得到所述目标进程的内存增长率;
当所述内存增长率大于预设增长率阈值时,确定所述目标进程处于内存泄漏的状态。
4.根据权利要求3所述的方法,其中,所述根据对应采集时间属于第一时间区间的内存占用信息的均值和对应采集时间属于第二时间区间的内存占用信息的均值,确定所述目标进程的内存泄漏状态,还包括:
当所述内存增长率小于或等于预设增长率阈值时,确定所述目标进程处于非内存泄漏的状态。
5.根据权利要求1-4之一所述的方法,其中,在所述按照预设数据采集周期采集所述系统中的目标进程的内存占用信息之后,所述方法还包括:
根据所述内存占用信息生成并输出内存曲线图,其中,所述内存曲线图的横坐标为以时间为顺序的采集时间,纵坐标为与采集时间对应的内存占用信息。
6.根据权利要求5所述的方法,其中,所述根据所述内存占用信息生成并输出内存曲线图,包括:
在满足预先设定的图生成条件时,根据所述内存占用信息生成并输出内存曲线图;其中,
所述预先设定的图生成条件包括以下至少一项:
采集到新的内存占用信息;
到达预设数据输出周期。
7.根据权利要求1-4之一所述的方法,其中,在所述根据所述内存占用信息确定所述目标进程的内存泄漏状态之后,所述方法还包括:
向目标终端发送用于描述所述目标进程的内存泄漏状态的信息。
8.根据权利要求1-4之一所述的方法,其中,所述根据所述内存占用信息确定所述目标进程的内存泄漏状态,包括:
对所述内存占用信息进行格式化处理,以及根据格式化后的内存占用信息确定所述目标进程的内存泄漏状态。
9.一种内存泄漏检测装置,其中,所述装置包括:
数据采集单元,用于当系统启动时,按照预设数据采集周期采集所述系统中的目标进程的内存占用信息;
状态确定单元,用于当检测到系统运行异常时,根据所述内存占用信息确定所述目标进程的内存泄漏状态。
10.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010909902.2A CN112214394B (zh) | 2020-09-02 | 2020-09-02 | 内存泄漏检测方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010909902.2A CN112214394B (zh) | 2020-09-02 | 2020-09-02 | 内存泄漏检测方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112214394A true CN112214394A (zh) | 2021-01-12 |
CN112214394B CN112214394B (zh) | 2024-05-03 |
Family
ID=74049020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010909902.2A Active CN112214394B (zh) | 2020-09-02 | 2020-09-02 | 内存泄漏检测方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112214394B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157455A (zh) * | 2021-04-27 | 2021-07-23 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置、电子设备及计算机可读存储介质 |
CN113672417A (zh) * | 2021-07-28 | 2021-11-19 | 杭州迪普科技股份有限公司 | 内存泄漏告警方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107346285A (zh) * | 2017-05-26 | 2017-11-14 | 郑州云海信息技术有限公司 | 一种内存泄露检测方法及装置 |
CN110134611A (zh) * | 2019-05-20 | 2019-08-16 | 腾讯科技(深圳)有限公司 | 内存泄漏分析方法、装置、终端和存储介质 |
-
2020
- 2020-09-02 CN CN202010909902.2A patent/CN112214394B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107346285A (zh) * | 2017-05-26 | 2017-11-14 | 郑州云海信息技术有限公司 | 一种内存泄露检测方法及装置 |
CN110134611A (zh) * | 2019-05-20 | 2019-08-16 | 腾讯科技(深圳)有限公司 | 内存泄漏分析方法、装置、终端和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157455A (zh) * | 2021-04-27 | 2021-07-23 | 腾讯科技(深圳)有限公司 | 内存管理方法、装置、电子设备及计算机可读存储介质 |
CN113672417A (zh) * | 2021-07-28 | 2021-11-19 | 杭州迪普科技股份有限公司 | 内存泄漏告警方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112214394B (zh) | 2024-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110708212B (zh) | 分布式系统中调用链路的追踪方法及装置 | |
CN107688626B (zh) | 慢查询日志处理方法、装置及电子设备 | |
CN112214394A (zh) | 内存泄漏检测方法、装置和设备 | |
CN109582649B (zh) | 一种元数据存储方法、装置、设备及可读存储介质 | |
CN109871408B (zh) | 一种多类型数据库适配方法、装置、电子设备及存储介质 | |
CN107368351B (zh) | 一种虚拟机配置自动升级扩容方法和装置 | |
CN107092556B (zh) | 测试方法、装置及设备 | |
CN110781166B (zh) | 存储系统中数据管理方法和装置 | |
CN115103024B (zh) | 一种序列号生成方法、装置、电子设备及存储介质 | |
CN109298974B (zh) | 系统控制方法、装置、计算机及计算机可读存储介质 | |
CN110795239A (zh) | 应用内存泄露的检测方法及装置 | |
CN116361106A (zh) | 一种日志处理方法、装置、电子设备及存储介质 | |
CN112632132B (zh) | 一种异常导入数据的处理方法、装置及设备 | |
CN115328736A (zh) | 一种探针部署方法、装置、设备和存储介质 | |
CN111309475B (zh) | 一种检测任务执行方法及设备 | |
CN114020717A (zh) | 分布式存储系统的性能数据获取方法、装置、设备及介质 | |
CN114912111A (zh) | 一种云主机病毒检测方法、装置和系统 | |
CN114218000A (zh) | 日志管理方法、装置、电子设备及计算机可读存储介质 | |
CN109488632B (zh) | 设备控制方法、装置及计算机可读存储介质 | |
CN112699563A (zh) | 一种速度分段方法、装置、电子设备及存储介质 | |
CN110908886A (zh) | 一种数据发送方法、装置、电子设备和存储介质 | |
CN116974856B (zh) | 一种自动获取日志文件的方法、装置、设备及介质 | |
CN111124882B (zh) | 一种实现应用测试的方法、装置、计算机存储介质及终端 | |
CN114081396B (zh) | 扫地机的地图数据上报方法、装置、存储介质及电子设备 | |
CN110034833B (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 |