CN110704313B - Java虚拟机内存泄漏检测方法及装置 - Google Patents

Java虚拟机内存泄漏检测方法及装置 Download PDF

Info

Publication number
CN110704313B
CN110704313B CN201910913968.6A CN201910913968A CN110704313B CN 110704313 B CN110704313 B CN 110704313B CN 201910913968 A CN201910913968 A CN 201910913968A CN 110704313 B CN110704313 B CN 110704313B
Authority
CN
China
Prior art keywords
time period
preset time
preset
virtual machine
java virtual
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
CN201910913968.6A
Other languages
English (en)
Other versions
CN110704313A (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 Baolande Software Co ltd
Original Assignee
Beijing Baolande Software 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 Baolande Software Co ltd filed Critical Beijing Baolande Software Co ltd
Priority to CN201910913968.6A priority Critical patent/CN110704313B/zh
Publication of CN110704313A publication Critical patent/CN110704313A/zh
Application granted granted Critical
Publication of CN110704313B publication Critical patent/CN110704313B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明实施例提供一种JAVA虚拟机内存泄漏检测方法及装置,其中,方法包括:每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息;判断所述JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则;若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则确定JAVA虚拟机发生内存泄漏。本发明实施例能够提前发现JAVA虚拟机的内存泄漏情况,以提前告警,提前解决,使应用发生宕机的概率大大减小,且检测的准确率高。

Description

JAVA虚拟机内存泄漏检测方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种JAVA虚拟机内存泄漏检测方法及装置。
背景技术
随着计算机应用需求的日益增加,应用程序的设计与开发也相应的日趋复杂,开发人员在程序实现的过程中处理的变量也大量增加,如何有效进行内存分配和释放,防止内存泄漏的问题变得越来越突出。例如服务器应用软件,需要长时间的运行,不断的处理由客户端发来的请求,如果没有有效的内存管理,每处理一次请求信息就有一定的内存泄漏。这样不仅影响到服务器的性能,还可能造成整个系统的崩溃。JVM(Java Virtual Machine,简称Java虚拟机)运行过程中,就经常出现内存泄漏的情况。内存泄漏的破坏性大,内存泄漏在生产应用中就像定时炸弹,内存达到一定程度后直接可能引发程序崩溃,造成大量财产损失;内存泄漏的预知性差,缓慢的内存泄漏和泄漏逻辑触发隐蔽时在开发甚至稳定性运行过程中都无法被感知;内存泄漏解决困难,生产环境内存泄漏产生问题后往往第一面对的人员是运维同事,内存泄漏问题需要专业开发人员解决,但为了快速恢复生产,场景往往可能被破坏。
在现有技术中,一般是通过heap dump的方式来获取Java虚拟机的内存信息,借助于第三方工具去查看heap dump的导出文件,从而得到Java虚拟机内存的使用情况。目前还没有一套统一的判断内存泄漏的标准,只能根据heap dump导出文件得到内存使用情况,以及运行实例的各个类的所占内存空间,根据运维人员的经验判断可能发生内存泄漏的点,再结合代码查看是否发生内存泄漏。
但是,现有借助于第三方工具根据heap dump导出文件得到内存使用情况,根据运维人员的经验判断可能发生内存泄漏的点,再结合代码查看是否发生内存泄漏的这种方式需要人工辅助分析,对运维人员的经验和能力要求较高,且检测效率较低;由于内存泄漏的随机性,该方式不容易发现问题症结,且在使用该方式的时候应用是处于不可用的状态。
发明内容
针对现有技术存在的问题,本发明实施例提供一种JAVA虚拟机内存泄漏检测方法及装置。
本发明实施例提供一种JAVA虚拟机内存泄漏检测方法,包括:
每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息;
判断所述JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则;
若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则确定JAVA虚拟机发生内存泄漏。
可选地,所述预设内存泄漏规则,包括下述子规则中的至少一条:
子规则一:第二预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则二:第三预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则三:第四预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则四:第四预设时间段内同一时刻的老年代使用值阶梯式上升;
子规则五:同一时段的GC次数的同比增长幅度大于预设第一阈值,和/或同一时段的GC次数的环比增长幅度大于预设第二阈值;
子规则六:连续预设次数老年代使用占比超过预设百分比。
可选地,所述预设内存泄漏规则中包含的一条或多条子规则是根据JAVA虚拟机不同的业务场景,从所有子规则中选取的。
可选地,所述第二预设时间段小于所述第三预设时间段,所述第三预设时间段小于所述第四预设时间段,所述第四预设时间段小于所述第一预设时间段。
可选地,所述第二预设时间段为一小时,所述第三预设时间段为一天,所述第四预设时间段为一星期。
本发明实施例提供一种JAVA虚拟机内存泄漏检测装置,包括:
获取模块,用于每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息;
判断模块,用于判断所述JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则;
确定模块,用于若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则确定JAVA虚拟机发生内存泄漏。
可选地,所述预设内存泄漏规则,包括下述子规则中的至少一条:
子规则一:第二预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则二:第三预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则三:第四预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则四:第四预设时间段内同一时刻的老年代使用值阶梯式上升;
子规则五:同一时段的GC次数的同比增长幅度大于预设第一阈值,和/或同一时段的GC次数的环比增长幅度大于预设第二阈值;
子规则六:连续预设次数老年代使用占比超过预设百分比。
可选地,所述第二预设时间段小于所述第三预设时间段,所述第三预设时间段小于所述第四预设时间段,所述第四预设时间段小于所述第一预设时间段。
本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述方法的步骤。
本发明实施例提供的JAVA虚拟机内存泄漏检测方法及装置,通过每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息,若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则确定JAVA虚拟机发生内存泄漏,由此,能够提前发现JAVA虚拟机的内存泄漏情况,以提前告警,提前解决,使应用发生宕机的概率大大减小,且检测的准确率高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的一种JAVA虚拟机内存泄漏检测方法的流程示意图;
图2为本发明一实施例提供的一种JAVA虚拟机内存泄漏检测装置的结构示意图;
图3为本发明一实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明一实施例提供的一种JAVA虚拟机内存泄漏检测方法的流程示意图,如图1所示,本实施例的JAVA虚拟机内存泄漏检测方法,包括:
S1、每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次GC(垃圾回收)后的内存块信息。
需要说明的是,本实施例所述JAVA虚拟机内存泄漏检测方法的执行主体可以为人工智能AI平台。
可以理解的是,本实施例可以对JAVA虚拟机进行实时监控,每次发生GC后都记录内存块信息,进而AI平台可以每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息,为后续进行内存泄漏检测作准备。
可以理解的是,所述第一预设时间段可以根据实际情况进行设置,本实施例并不对其进行限制,例如所述第一预设时间段可以设置为三星期、一个月等。
S2、判断所述JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则。
可以理解的是,本实施例通过判断所述JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则,能够基于预设内存泄漏规则提前发现JAVA虚拟机的内存泄漏情况。
在具体应用中,所述预设内存泄漏规则,可以包括下述子规则中的至少一条:
子规则一:第二预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则二:第三预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则三:第四预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则四:第四预设时间段内同一时刻的老年代使用值阶梯式上升;
子规则五:同一时段的GC次数的同比增长幅度大于预设第一阈值,和/或同一时段的GC次数的环比增长幅度大于预设第二阈值;
子规则六:连续预设次数老年代使用占比超过预设百分比。
其中,所述第二预设时间段、所述第三预设时间段和所述第四预设时间段可以根据实际情况进行设置,所述第二预设时间段小于所述第三预设时间段,所述第三预设时间段小于所述第四预设时间段,所述第四预设时间段小于所述第一预设时间段。例如,所述第二预设时间段可以为一小时,所述第三预设时间段可以为一天,所述第四预设时间段可以为一星期。
可以理解的是,本实施例可根据JAVA虚拟机不同的业务场景具体设置所述预设第一阈值以及所述预设第二阈值,本实施例并不对其进行限制。
可以理解的是,所述预设内存泄漏规则中包含的一条或多条子规则可根据JAVA虚拟机不同的业务场景,从所有子规则中进行选取。当然,本实施例所述预设内存泄漏规则中包括的子规则也可以不限于上述六条子规则,可根据实际情况对子规则进行具体设置。
S3、若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则确定JAVA虚拟机发生内存泄漏。
可以理解的是,本实施例是在AI平台中预先设置了所述预设内存泄漏规则,AI平台在每隔第一预设时间段获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息后,判断所获取的JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则,若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则可以确定JAVA虚拟机发生内存泄漏。
在具体应用中,本实施例所述方法在确定JAVA虚拟机发生内存泄漏之后,可以对JAVA虚拟机发生内存泄漏的应用进行提前告警,使运维人员可以在应用宕机之前进行处理,规避发生故障。
可以理解的是,本实施例采用了无侵入采集垃圾回收GC后的内存块信息的方式,整个过程对应用系统几乎没有影响,自动分析JAVA虚拟机内存使用趋势,基于预设内存泄漏规则,实现内存泄漏提前感知,以提前预警,提前解决。
本实施例提供的JAVA虚拟机内存泄漏检测方法,通过每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息,若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则确定JAVA虚拟机发生内存泄漏,由此,能够提前发现JAVA虚拟机的内存泄漏情况,以提前告警,提前解决,使应用发生宕机的概率大大减小,且可有效提高检测的准确率。
图2示出了本发明一实施例提供的一种JAVA虚拟机内存泄漏检测装置的结构示意图,如图2所示,本实施例的JAVA虚拟机内存泄漏检测装置,包括:获取模块21、判断模块22和确定模块23;其中:
所述获取模块21,用于每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息;
所述判断模块22,用于判断所述JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则;
所述确定模块23,用于若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则确定JAVA虚拟机发生内存泄漏。
具体地,所述获取模块21每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息;所述判断模块22判断所述JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则;所述确定模块23若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则确定JAVA虚拟机发生内存泄漏。
需要说明的是,本实施例所述JAVA虚拟机内存泄漏检测装置可应用于人工智能AI平台。
可以理解的是,本实施例可以对JAVA虚拟机进行实时监控,每次发生GC后都记录内存块信息,进而所述获取模块21可以每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息,为后续进行内存泄漏检测作准备。
可以理解的是,所述第一预设时间段可以根据实际情况进行设置,本实施例并不对其进行限制,例如所述第一预设时间段可以设置为三星期、一个月等。
可以理解的是,本实施例通过所述判断模块22判断所述JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则,能够基于预设内存泄漏规则提前发现JAVA虚拟机的内存泄漏情况。
在具体应用中,所述预设内存泄漏规则,可以包括下述子规则中的至少一条:
子规则一:第二预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则二:第三预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则三:第四预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则四:第四预设时间段内同一时刻的老年代使用值阶梯式上升;
子规则五:同一时段的GC次数的同比增长幅度大于预设第一阈值,和/或同一时段的GC次数的环比增长幅度大于预设第二阈值;
子规则六:连续预设次数老年代使用占比超过预设百分比。
其中,所述第二预设时间段、所述第三预设时间段和所述第四预设时间段可以根据实际情况进行设置,所述第二预设时间段小于所述第三预设时间段,所述第三预设时间段小于所述第四预设时间段,所述第四预设时间段小于所述第一预设时间段。例如,所述第二预设时间段可以为一小时,所述第三预设时间段可以为一天,所述第四预设时间段可以为一星期。
可以理解的是,本实施例可根据JAVA虚拟机不同的业务场景具体设置所述预设第一阈值以及所述预设第二阈值,本实施例并不对其进行限制。
可以理解的是,所述预设内存泄漏规则中包含的一条或多条子规则可根据JAVA虚拟机不同的业务场景,从所有子规则中进行选取。当然,本实施例所述预设内存泄漏规则中包括的子规则也可以不限于上述六条子规则,可根据实际情况对子规则进行具体设置。
可以理解的是,本实施例是在AI平台中预先设置了所述预设内存泄漏规则,AI平台在每隔第一预设时间段获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息后,判断所获取的JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则,若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则可以确定JAVA虚拟机发生内存泄漏。
在具体应用中,本实施例所述确定模块23在确定JAVA虚拟机发生内存泄漏之后,可以对JAVA虚拟机发生内存泄漏的应用进行提前告警,使运维人员可以在应用宕机之前进行处理,规避发生故障。
可以理解的是,本实施例采用了无侵入采集垃圾回收GC后的内存块信息的方式,整个过程对应用系统几乎没有影响,自动分析JAVA虚拟机内存使用趋势,基于预设内存泄漏规则,实现内存泄漏提前感知,以提前预警,提前解决。
本实施例提供的JAVA虚拟机内存泄漏检测装置,能够提前发现JAVA虚拟机的内存泄漏情况,以提前告警,提前解决,使应用发生宕机的概率大大减小,且可有效提高检测的准确率。
本发明实施例提供的JAVA虚拟机内存泄漏检测装置,可以用于执行前述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图3示出了本发明一实施例提供的一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括存储器302、处理器301、总线303及存储在存储器302上并可在处理器301上运行的计算机程序,其中,处理器301,存储器302通过总线303完成相互间的通信。所述处理器301执行所述计算机程序时实现上述方法的步骤,例如包括:每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息;判断所述JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则;若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则确定JAVA虚拟机发生内存泄漏。
本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤,例如包括:每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息;判断所述JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则;若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则确定JAVA虚拟机发生内存泄漏。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (8)

1.一种JAVA虚拟机内存泄漏检测方法,其特征在于,包括:
每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息;
判断所述JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则;
所述预设内存泄漏规则,包括下述子规则中的至少一条:
子规则一:第二预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则二:第三预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则三:第四预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则四:第四预设时间段内同一时刻的老年代使用值阶梯式上升;
子规则五:同一时段的GC次数的同比增长幅度大于预设第一阈值,和/或同一时段的GC次数的环比增长幅度大于预设第二阈值;
子规则六:连续预设次数老年代使用占比超过预设百分比;
若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则确定JAVA虚拟机发生内存泄漏。
2.根据权利要求1所述的JAVA虚拟机内存泄漏检测方法,其特征在于,所述预设内存泄漏规则中包含的一条或多条子规则是根据JAVA虚拟机不同的业务场景,从所有子规则中选取的。
3.根据权利要求1所述的JAVA虚拟机内存泄漏检测方法,其特征在于,所述第二预设时间段小于所述第三预设时间段,所述第三预设时间段小于所述第四预设时间段,所述第四预设时间段小于所述第一预设时间段。
4.根据权利要求1所述的JAVA虚拟机内存泄漏检测方法,其特征在于,所述第二预设时间段为一小时,所述第三预设时间段为一天,所述第四预设时间段为一星期。
5.一种JAVA虚拟机内存泄漏检测装置,其特征在于,包括:
获取模块,用于每隔第一预设时间段,获取JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息;
判断模块,用于判断所述JAVA虚拟机在所述第一预设时间段内每次垃圾回收GC后的内存块信息是否符合预设内存泄漏规则;
所述预设内存泄漏规则,包括下述子规则中的至少一条:
子规则一:第二预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则二:第三预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则三:第四预设时间段内所有GC后的老年代使用值阶梯式上升;
子规则四:第四预设时间段内同一时刻的老年代使用值阶梯式上升;
子规则五:同一时段的GC次数的同比增长幅度大于预设第一阈值,和/或同一时段的GC次数的环比增长幅度大于预设第二阈值;
子规则六:连续预设次数老年代使用占比超过预设百分比;
确定模块,用于若所述JAVA虚拟机在所述第一预设时间段内所有垃圾回收GC后的内存块信息符合预设内存泄漏规则,则确定JAVA虚拟机发生内存泄漏。
6.根据权利要求5所述的JAVA虚拟机内存泄漏检测装置,其特征在于,所述第二预设时间段小于所述第三预设时间段,所述第三预设时间段小于所述第四预设时间段,所述第四预设时间段小于所述第一预设时间段。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4任一项所述方法的步骤。
8.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至4任一项所述方法的步骤。
CN201910913968.6A 2019-09-25 2019-09-25 Java虚拟机内存泄漏检测方法及装置 Active CN110704313B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910913968.6A CN110704313B (zh) 2019-09-25 2019-09-25 Java虚拟机内存泄漏检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910913968.6A CN110704313B (zh) 2019-09-25 2019-09-25 Java虚拟机内存泄漏检测方法及装置

Publications (2)

Publication Number Publication Date
CN110704313A CN110704313A (zh) 2020-01-17
CN110704313B true CN110704313B (zh) 2023-07-25

Family

ID=69197049

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910913968.6A Active CN110704313B (zh) 2019-09-25 2019-09-25 Java虚拟机内存泄漏检测方法及装置

Country Status (1)

Country Link
CN (1) CN110704313B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111966603B (zh) * 2020-09-04 2024-01-19 网易(杭州)网络有限公司 内存泄露的检测方法及装置、可读存储介质及电子设备
CN116755951B (zh) * 2023-08-16 2024-03-08 荣耀终端有限公司 内存颠簸的衡量方法、设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8229979B2 (en) * 2006-04-28 2012-07-24 Sap Ag Method and system for inspecting memory leaks
CN104182320B (zh) * 2013-05-23 2017-09-29 联想(北京)有限公司 一种监控内存泄漏的方法及装置
CN108073439A (zh) * 2016-11-11 2018-05-25 深圳业拓讯通信科技有限公司 一种jvm内存泄露自动检测方法以及系统
CN108073441B (zh) * 2016-11-14 2022-05-10 阿里巴巴集团控股有限公司 一种虚拟机内存监管方法与设备
CN108205489A (zh) * 2016-12-16 2018-06-26 华为软件技术有限公司 Java应用内存泄漏检测方法和装置
CN108664390B (zh) * 2017-03-31 2021-10-01 华为技术有限公司 一种内存泄露检测方法及设备
CN109408383B (zh) * 2018-10-12 2023-04-14 北京宝兰德软件股份有限公司 一种Java内存泄漏分析方法及装置

Also Published As

Publication number Publication date
CN110704313A (zh) 2020-01-17

Similar Documents

Publication Publication Date Title
CN109039740B (zh) 一种处理运维监控告警的方法及设备
CN108763957B (zh) 一种数据库的安全审计系统、方法及服务器
CN106657057B (zh) 反爬虫系统及方法
US10198340B2 (en) Application performance monitoring
CN108521339B (zh) 一种基于集群日志的反馈式节点故障处理方法及系统
CN111817891A (zh) 网络故障处理方法、装置、存储介质及电子设备
CN102929773B (zh) 信息采集方法和装置
CN110704313B (zh) Java虚拟机内存泄漏检测方法及装置
US10324784B2 (en) Mitigating crashes of an application server executing a monitoring agent
CN115080356B (zh) 异常告警方法和装置
CN112612680A (zh) 一种消息告警方法、系统、计算机设备及存储介质
CN112445686A (zh) 内存泄漏检测方法、装置以及计算机可读存储介质
WO2020211253A1 (zh) 分布式系统中主机数量弹性伸缩方法、装置和计算机设备
CN113704018A (zh) 应用运维数据处理方法、装置、计算机设备及存储介质
CN111131815A (zh) 智能电视性能监控与异常进程处理方法及装置
CN108255703B (zh) 一种sql脚本的故障修复方法及其终端
CN115794479B (zh) 日志数据处理方法、装置、电子设备及存储介质
CN108021463B (zh) 一种基于有限状态机的gpu故障管理方法
CN112804104A (zh) 一种预警方法、装置、设备及介质
CN115426247B (zh) 故障节点的处理方法、装置、存储介质及电子设备
CN113297074B (zh) 一种内存跟踪方法及装置
CN108062471B (zh) 一种云计算网络运行过程中的风险处理方法及设备
CN112541183B (zh) 数据处理方法及装置、边缘计算设备、存储介质
CN116798204B (zh) 一种安防方法、装置、设备及存储介质
CN113778738A (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