CN103440161A - 一种Java虚拟机内部对象监控方法、装置和系统 - Google Patents

一种Java虚拟机内部对象监控方法、装置和系统 Download PDF

Info

Publication number
CN103440161A
CN103440161A CN2013103569306A CN201310356930A CN103440161A CN 103440161 A CN103440161 A CN 103440161A CN 2013103569306 A CN2013103569306 A CN 2013103569306A CN 201310356930 A CN201310356930 A CN 201310356930A CN 103440161 A CN103440161 A CN 103440161A
Authority
CN
China
Prior art keywords
class
virtual machine
java virtual
memory
information
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
Application number
CN2013103569306A
Other languages
English (en)
Other versions
CN103440161B (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.)
Chongqing Tianji cloud Clothing Technology Co., Ltd.
Original Assignee
Beijing Jingdong Shangke Information 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 Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Shangke Information Technology Co Ltd
Priority to CN201310356930.6A priority Critical patent/CN103440161B/zh
Publication of CN103440161A publication Critical patent/CN103440161A/zh
Application granted granted Critical
Publication of CN103440161B publication Critical patent/CN103440161B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种Java虚拟机内部对象监控方法、装置和系统,其中所述监控方法包括:根据操作系统所分配的进程ID获取需要监控的Java虚拟机进程的类加载树,并将类加载树转换成类集合列表;将类集合列表中的类信息根据过滤条件进行过滤并从过滤后的类信息中获取类对象信息,根据类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中;对预设时间段内监控所得的关键数据进行汇总,产生汇总报告;将汇总报告中的数据以多种方式展示在页面上。本发明能够实现与实际运行环境很好地结合,并且能为系统运行维护人员提供直观、明确的提示。

Description

一种Java虚拟机内部对象监控方法、装置和系统
技术领域
本发明涉及计算机应用软件技术领域,具体涉及Java虚拟机技术领域,尤其涉及一种Java虚拟机内部对象监控方法、装置和系统。
背景技术
Java虚拟机(Java Virtual Machine,简称JVM)是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。Java虚拟机屏蔽了与操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
在通过Java虚拟机运行Java程序时,由于加载到Java虚拟机中的Java程序的类信息过大,可能会引起系统内存溢出或堆栈溢出,从而造成系统性能下降甚至系统崩溃。因此,为了防止上述情况的发生,需要对加载到Java虚拟机中的类信息进行监控,即需要Java虚拟机监控系统。然而,现有技术的Java虚拟机监控系统主要依靠查看工具,存在以下问题:
1、监控的类信息非常复杂,很多类信息与实际运行环境关联度较低,因此,定制化程度很低,无法与实际运行环境紧密地结合。
2、主要分析Java虚拟机进程是否存活,很难分析Java虚拟机内部对象的存活等深层的信息。
3、不能对所查看的信息进行分析和汇总,严重依靠使用者的经验和能力,对系统运行维护人员提升虚拟机的性能帮助不大。
4、对所查看的信息的展示方式单一,很多内容仅限于文字,不能为系统运行维护人员提供直观、明确的提示。
发明内容
有鉴于此,本发明实施例提供一种Java虚拟机内部对象监控方法、装置和系统,来解决以上背景技术部分提到的技术问题。
一方面,本发明实施例提供了一种Java虚拟机内部对象监控方法,所述监控方法包括:
根据操作系统所分配的进程ID获取需要监控的Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表;
将所述类集合列表中的类信息根据过滤条件进行过滤并从过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中;
对预设时间段内监控所得的所述关键数据进行汇总,产生汇总报告;
将所述汇总报告中的数据以多种方式展示在页面上。
进一步地,所述根据操作系统所分配的进程ID获取需要监控的Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表的步骤,具体为:
根据操作系统所分配的进程ID获取运行的Java虚拟机进程集合;
从所述Java虚拟机进程集合中获取需要监控的Java虚拟机进程;
根据所述需要监控的Java虚拟机进程获取所述Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表。
进一步地,所述将所述类集合列表中的类信息根据过滤条件进行过滤并从过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中的步骤,具体为:
将所述过滤条件与所述类集合列表中的类信息进行信息匹配,将信息匹配后符合所述过滤条件的类信息通过过滤方法获得过滤后的类信息;
从所述过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中。
进一步地,所述过滤条件包括:包名、类名、类对象数量或类对象的内存占用大小;所述过滤方法包括路由算法或正则匹配。
进一步地,所述关键数据包括所述类对象的关键属性和根据所述关键属性计算的关键数据;
其中,所述关键属性包括:每个类对象的占用内存大小、所有类对象的占用内存大小、类对象数、内存区间的垃圾回收次数、Java虚拟机的回收次数和类的创建时间,其中,所述内存区间包括新生代区间、旧生代区间和持久代区间;
所述关键数值包括:内存垃圾回收比率、虚拟机占用的最大内存及最小内存、各个内存区间的大小和类对象的存活时间。
进一步地,所述汇总报告包括:预设时间段内系统占用的最大内存及发生的时间;预设时间段内系统占用的最小内存及发生的时间;预设时间段内系统的类对象总数量;预设时间段内系统的类对象数超过阈值的类名、包名和占用内存大小;预设时间段内系统的类对象存活时间最长的类名、包名和占用内存大小;预设时间段内系统的垃圾回收次数,各内存区间的回收次数;预设时间段内超过正常内存阈值的内存大小,包含的类名、包名以及发生的时间。
进一步地,所述多种方式包括:文字、表格、柱状图、饼状图、折线图或二位符合图。
进一步地,所述汇总报告中的边界信息,通过颜色标识展示在页面上。
对应地,本发明实施例还提供了一种Java虚拟机内部对象监控装置,所述监控装置包括:
类信息获取模块,用于根据操作系统所分配的进程ID获取需要监控的Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表;
对象分析模块,用于将所述类集合列表中的类信息根据过滤条件进行过滤并从过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中;
汇总模块,用于对预设时间段内监控所得的所述关键数据进行汇总,产生汇总报告;
多方式展示模块,用于将所述汇总报告中的数据以多种方式展示在页面上。
进一步地,所述类信息获取模块包括:
虚拟机进程集合获取子模块,用于根据操作系统所分配的进程ID获取运行的Java虚拟机进程集合;
需要监控的虚拟机进程获取子模块,用于从所述Java虚拟机进程集合中获取需要监控的Java虚拟机进程;
类加载树获取及转换子模块,用于根据所述需要监控的Java虚拟机进程获取所述Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表。
进一步地,所述对象分析模块包括:
类信息过滤子模块,用于将所述过滤条件与所述类集合列表中的类信息进行信息匹配,将信息匹配后符合所述过滤条件的类信息通过过滤方法获得过滤后的类信息;
类对象关键数据分析子模块,从所述过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中。
进一步地,所述过滤条件包括:包名、类名、类实例数量或类实例的内存占用大小;所述过滤方法包括路由算法或正则匹配。
进一步地,所述关键数据包括所述类对象的关键属性和根据所述关键属性计算的关键数据;
其中,所述关键属性包括:每个类对象的占用内存大小、所有类对象的占用内存大小、类对象数、内存区间的垃圾回收次数、Java虚拟机的回收次数和类的创建时间,其中,所述内存区间包括新生代区间、旧生代区间和持久代区间;
所述关键数值包括:内存垃圾回收比率、虚拟机占用的最大内存及最小内存、各个内存区间的大小和类对象的存活时间。
进一步地,所述汇总报告包括:预设时间段内系统占用的最大内存及发生的时间;预设时间段内系统占用的最小内存及发生的时间;预设时间段内系统的类对象总数量;预设时间段内系统的类对象数超过阈值的类名、包名和占用内存大小;预设时间段内系统的类对象存活时间最长的类名、包名和占用内存大小;预设时间段内系统的垃圾回收次数,各内存区间的回收次数;预设时间段内超过正常内存阈值的内存大小,包含的类名、包名以及发生的时间。
进一步地,所述多种方式包括:文字、表格、柱状图、饼状图、折线图或二位符合图。
进一步地,所述汇总报告中的边界信息,通过颜色标识展示在页面上。
对应地,本发明实施例还提供了一种Java虚拟机内部对象监控系统,所述监控系统包括监控器和Java虚拟机,其中,所述监控器包括:
类信息获取模块,用于根据操作系统所分配的进程ID获取需要监控的Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表;
对象分析模块,用于将所述类集合列表中的类信息根据过滤条件进行过滤并从过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中;
汇总模块,用于对预设时间段内监控所得的所述关键数据进行汇总,产生汇总报告;
多方式展示模块,用于将所述汇总报告中的数据以多种方式展示在页面上。
本发明实施例提出的一种Java虚拟机内部对象监控方法、装置和系统具有如下特点:通过设置过滤条件,可以获取用户所关注的类信息,提高了定制化程度,并能够很好地实现与实际运行环境紧密地结合;另外,通过对类对象信息进行分析,能够获得类对象的存活情况,占用内存大小等深层、具体的信息;通过提供详实的汇总报告,能够为系统运行维护人员了解系统的运行状态提供很大的帮助;通过使用表格或图表等对汇总报告中的数据进行多方式展示,能够为系统运行维护人员提供直观、明确的提示。
附图说明
图1是根据本发明第一实施例的Java虚拟机内部对象监控方法的流程图;
图2是图1中步骤S101的具体流程图;
图3是图1中步骤S102的具体流程图;
图4是根据本发明第二实施例的Java虚拟机内部对象监控装置的结构框图;
图5是根据本发明第三实施例的Java虚拟机内部对象监控系统的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。
在图1-3中示出了本发明的第一实施例。
图1是根据本发明第一实施例的Java虚拟机内部对象监控方法的流程图,该监控方法的流程如下:
步骤S101:根据操作系统所分配的进程ID获取需要监控的Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表。
首先,开始Java虚拟机的监控,然后进行步骤S101。如图2所示,该步骤具体包括:
步骤S201:根据操作系统所分配的进程ID获取运行的Java虚拟机进程集合。
从理论上来讲,每个Java程序的启动或运行,都会创建一个Java虚拟机进程,该进程属于系统进程,能够在操作系统的任务管理器中查看到,并且由系统分配进程ID(即PID)。因此,能够根据操作系统所分配的进程ID获取所有运行的Java虚拟机进程集合。
步骤S202:从所述Java虚拟机进程集合中获取需要监控的Java虚拟机进程。
从所述Java虚拟机进程集合中获取需要监控的Java虚拟机进程,获取方式包括:人工手动方式或自动方式。人工手动方式,是通过查看Java虚拟机进程集合,获取占用较大的虚拟机进程,作为需要进行监控的虚拟机进程。这种获取方式适用于Java虚拟机进程集合中的进程数量较少的时候,例如几个进程或十几个进程。自动方式,通过设定一个进程占用内存的阈值,例如10M,当Java虚拟机进程集合中的进程达到或超出这个阈值时,就会自动被获取作为需要监控的虚拟机进程。这种获取方式既适用于Java虚拟机进程集合中的进程数量较少的时候,也适用于进程数量较多的时候;特别是进程数量较多时,例如二十几个进程甚至更多,采用自动方式获取需要监控的虚拟机进程,会节省时间,并且非常方便。
步骤S203:根据所述需要监控的Java虚拟机进程获取所述Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表。
利用需要监控的Java虚拟机进程ID,配合JDK(Java Development Kit,Java开发包,Java开发工具)提供的Tools.jar和Agent.jar就可以获取该虚拟机进程在Java中对应的类实例。再通过虚拟机类实例可以获取到该虚拟机内部类加载树。这个类加载树包含虚拟机已经加载的各种类信息(包含类的包名,文件名,类实例数量,每个类实例的内存占用大小等)。这些类的数量非常大,其中包含很多Java的自带类,而且这些类的大部分与要开发的系统无关。此外,树状的结构不便于查询和操作,因此,必须将树状的结构转换为集合列表的结构,以便于提高效率。
步骤S102:将所述类集合列表中的类信息根据过滤条件进行过滤并从过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中。如图3所示,该步骤具体包括:
步骤S301:将所述过滤条件与所述类集合列表中的类信息进行信息匹配,将信息匹配后符合所述过滤条件的类信息通过过滤方法获得过滤后的类信息。
在本实施例的一种优选的实施方式中,所述过滤条件包括包名、类名、类对象数量或类对象的内存占用大小的组合设置;所述过滤方法包括但不限于:路由算法或正则匹配。
在进行对象分析之前,需要设置过滤条件,例如,根据包名、类名,类对象数量,类对象的内存占用大小等等进行组合设置。在步骤S101中,已经将类加载树转为了平面的类集合列表,这样可以更加容易的与过滤条件进行匹配。当类集合列表中的类信息与过滤条件符合时,可以进一步通过路由算法或者正则匹配等方法获得过滤后的类信息。通过设置过滤条件,能够从非常繁杂的类信息中获得所需要的类信息,从而能够实现较高程度的定制化服务,并且可以根据实际业务进行设置过滤条件,从而能够与实际业务紧密地结合。
步骤S302:从所述过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中。
在本实施例的一种优选的实施方式中,所述关键数据包括所述类对象的关键属性和根据所述关键属性计算的关键数据;其中,所述关键属性包括:每个类对象的占用内存大小、所有类对象的占用内存大小、类对象数、内存区间的垃圾回收次数、Java虚拟机的回收次数和类的创建时间;其中,所述内存区间包括:新生代区间、旧生代区间和持久代区间;所述关键数值包括:内存垃圾回收比率、虚拟机占用的最大内存及最小内存、各个内存区间的大小和类对象的存活时间。通过对类对象的关键数据进行分析,能够获得有关类对象深层、具体的信息,为进行汇总和Java虚拟机参数优化提供了充足的数据。
所得的过滤后的类信息,通过Tools.jar和Agent.jar两个工具包,及JDK自带的Runtime类和System类能够获取类对象信息,从类对象信息中分析类对象的关键属性和关键数值。其中类对象的关键属性代表的意义很直观,重点分析经过计算所得的关键数值。关键数值中垃圾回收比率是垃圾回收器回收前占用内存的大小和总内存大小的比值。垃圾回收比率是Java虚拟机的一个参数,在实际使用中,可以设置这个比率,例如50%,表示在内存占用达到50%时进行回收。如果调大垃圾回收比率可以减小垃圾回收次数,但是也不是越大越好,回收次数过少,就可能出现内存占用过大的现象,因此,需要与其它参数配合使用。关键数值中虚拟机占用的最大内存及最小内存,可以用于推算虚拟机参数中的最大内存和最小内存,从展示出来的数据信息,可以看峰值和谷值,并由此看变化幅度和增长趋势。关键数值中各个内存区间的大小,可以用于推算虚拟机参数中各个内存区间的大小,推算各个内存区间使用的垃圾回收器的类型参数。关键数据中类对象的存活时间,可以辅助推算垃圾回收比率,另外,在展示时可以看出来生命周期长的类,需要重点观察,同时考虑是否存在性能漏洞,例如有的类始终存活而不被回收。
步骤S103:对预设时间段内监控所得的所述关键数据进行汇总,产生汇总报告。
所述预设时间段可以是周期形式。该周期可以通过系统进行设置,例如设置周期为30s,每隔30s进行一次汇总;也可以手动触发,如用户根据自己需要的时间段进行汇总。
在本实施例的一种优选的实施方式中,所述汇总报告包括但不限于以下的数据:预设时间段内系统占用的最大内存及发生的时间;预设时间段内系统占用的最小内存及发生的时间;预设时间段内系统的类对象总数量;预设时间段内系统的类对象数超过阈值的类名、包名和占用内存大小;预设时间段内系统的类对象存活时间最长的类名、包名和占用内存大小;预设时间段内系统的垃圾回收次数,各内存区间的回收次数;预设时间段内超过正常内存阈值的内存大小,包含的类名、包名以及发生的时间等。通过产生详细的汇总报告,能够帮助系统运行维护人员了解系统在预设时间段内的运行状态,并将超出阈值的信息通过日志、缓存和数据库的形式进行保存,以便于日后查看。
经汇总产生的汇总报告能以数据的形式直观展示内容,并且有固定的报告格式,方便用户阅读。诸如:系统最大内存XXX,发生在XXX时间;系统最小内存XXX,发生在XXX时间;系统在XXX时间内,超过正常阈值内存,内存大小XXX等。
根据汇总报告,可以为系统运行维护人员提供与Java虚拟机参数相关的优化建议。优化建议的功能是负责提供Java虚拟机参数的调优辅助。Java虚拟机的内存管理非常复杂,当内存不足的时候会自动进行扩容和垃圾回收,内存扩容和垃圾回收非常耗时且浪费性能,通常会造成系统的卡顿现象。为了防止这种情况的频繁发生,需要调整虚拟机参数。当虚拟机参数比较适合的时候,虚拟机的垃圾回收次数和内存扩容次数也会大大减少。通过对Java虚拟机参数提出优化建议,能够帮助系统运行维护人员来提升Java虚拟机的性能,从而能够提升整个系统的运行性能和稳定性等。
步骤S104:将所述汇总报告中的汇总数据以多种方式展示在页面上。
在本实施例的一种优选的实施方式中,所述多种方式包括但不限于:文字、表格、柱状图、饼状图、折线图或二位符合图。通过采用多种方式对数据进行展示,能为系统运行维护人员提供直观、明确的提示。
其中,文字适用于各种数据的展示,但对于各内存区间的内存占用百分比、某一时点的内存占用情况,某一段时间内的类对象数量变化趋势等数据,就不够直观、明显。
表格用于显示所有的统计信息,并支持灵活的查询规则,如汇总某一时间段,某一时间点,某一个具体的类名,包名,类对象数量进行过滤筛选,筛选后的信息显示在表格里。
柱状图主要用于系统操作分析。如通过大量的柱状图展示系统内存占用的变化情况,能看出在某一时间点内存占用是否比较高等,便于分析系统运行的规律性。
饼状图主要用于各部分占比的展示。如新生代区间,旧生代区间,永久代区间的内存占用百分比。此外,也支持对占比情况进行深入展示,如内存区间的具体类对象数,内存大小,垃圾回收次数等信息。
折线图主要用于分析趋势,例如分析某一段时间内的类对象的数量变化趋势,内存占用变化趋势等。
二维符合图主要用于分析和对比,将折线图与柱状图进行组合。如类对象数量曲线与内存占用柱状图的配合能够看出类对象与内存的直接关联。
在本实施例的一种优选的实施方式中,所述汇总报告中的边界信息,通过颜色标识展示在页面上。所述边界信息为达到或超过相应阈值的信息。对于边界信息,在页面上展示时,应该以警示颜色进行标识,颜色默认为红色,支持自定义颜色。这样做的好处是以便于鲜明、直观地提示。
将汇总报告的数据展示在页面上后,Java虚拟机的监控结束。
本发明第一实施例提出的Java虚拟机内部对象监控方法,具有如下特点:通过设置过滤条件,可以获取用户所关注的类信息,提高了定制化程度,并能够很好地实现与实际运行环境紧密地结合;另外,通过对类对象信息进行分析,能够获得类对象的存活情况,占用内存大小等深层、具体的信息;通过提供详实的汇总报告和虚拟机参数优化的提示,能够为系统运行维护人员进行参数调整时提供很大的帮助;通过使用表格或图表等对汇总报告中的数据进行多方式展示,能够为系统运行维护人员提供直观、明确的提示。
接下来为本发明的第二实施例Java虚拟机内部对象监控装置。由于其基本原理与本发明第一实施例的基本原理相同,所以对基本原理详细解释的部分,请参照第一实施例,在第二实施例中不再赘述。
在图4中示出了本发明的第二实施例。
图4是根据本发明第二实施例的Java虚拟机内部对象监控装置的结构框图,该监控装置包括:
类信息获取模块401:用于根据操作系统所分配的进程ID获取需要监控的Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表。
如图4所示,所述类信息获取模块401,包括:虚拟机进程集合获取子模块4011,用于根据操作系统所分配的进程ID获取运行的Java虚拟机进程集合;需要监控的虚拟机进程获取子模块4012,用于从所述Java虚拟机进程集合中获取需要监控的Java虚拟机进程;类加载树获取及转换子模块4013,用于根据所述需要监控的Java虚拟机进程获取所述Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表。
对象分析模块402:用于将所述类集合列表中的类信息根据过滤条件进行过滤并从过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中。如图4所示,所述对象分析模块402,包括:
类信息过滤子模块4021:用于将所述过滤条件与所述类集合列表中的类信息进行信息匹配,将信息匹配后符合所述过滤条件的类信息通过过滤方法获得过滤后的类信息。
在本实施例的一种优选的实施方式中,所述过滤条件包括包名、类名、类对象数量或类对象的内存占用大小的组合设置;所述过滤方法包括但不限于:路由算法或正则匹配。通过设置过滤条件,能够从非常繁杂的类信息中获得所需要的类信息,从而能够实现较高程度的定制化服务,并且可以根据实际业务进行设置过滤条件,从而能够与实际业务紧密地结合。
类对象关键数据分析子模块4022:从所述过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中。
在本实施例的一种优选的实施方式中,所述关键数据包括所述类对象的关键属性和根据所述关键属性计算的关键数据;其中,所述关键属性包括:每个类对象的占用内存大小、所有类对象的占用内存大小、类对象数、内存区间的垃圾回收次数、Java虚拟机的回收次数和类的创建时间;其中,所述内存区间包括:新生代区间、旧生代区间和持久代区间;所述关键数值包括:内存垃圾回收比率、虚拟机占用的最大内存及最小内存、各个内存区间的大小和类对象的存活时间。通过对类对象的关键数据进行分析,能够获得有关类对象深层、具体的信息,为进行汇总提供了充足的数据。
汇总模块403:用于对预设时间段内监控所得的所述关键数据进行汇总,产生汇总报告。
在本实施例的一种优选的实施方式中,所述汇总报告包括但不限于以下的数据:预设时间段内系统占用的最大内存及发生的时间;预设时间段内系统占用的最小内存及发生的时间;预设时间段内系统的类对象总数量;预设时间段内系统的类对象数超过阈值的类名、包名和占用内存大小;预设时间段内系统的类对象存活时间最长的类名、包名和占用内存大小;预设时间段内系统的垃圾回收次数,各内存区间的回收次数;预设时间段内超过正常内存阈值的内存大小,包含的类名、包名以及发生的时间等。通过产生详细的汇总报告,能够帮助系统运行维护人员了解系统在预设时间段内的运行状态,并将超出阈值的信息通过日志、缓存和数据库的形式进行保存,以便于日后查看。
多方式展示模块404:用于将所述汇总报告中的数据以多种方式展示在页面上。
在本实施例的一种优选的实施方式中,所述多种方式包括但不限于:文字、表格、柱状图、饼状图、折线图或二位符合图。通过采用多种方式对数据进行展示,能为系统运行维护人员提供直观、明确的提示。
在本实施例的一种优选的实施方式中,所述汇总报告中的边界信息,通过颜色标识展示在页面上。所述边界信息为达到或超过相应阈值的信息。对于边界信息,在页面上展示时,应该以警示颜色进行标识,颜色默认为红色,支持自定义颜色。这样做的好处是对重要的边界信息能够进行鲜明、直观地提示。
本发明第二实施例提出的Java虚拟机内部对象监控装置,具有如下特点:通过在对象分析模块中设置过滤条件,获取用户所关注的类信息,提高了定制化程度,并能够很好地实现与实际运行环境紧密地结合;另外,通过该模块对类对象信息进行分析,能够获得类对象的存活情况,占用内存大小等深层、具体的信息;通过在汇总模块中提供详实的汇总报告,能够为系统运行维护人员了解系统的运行状态提供很大的帮助;通过在多方式展示模块中使用表格或图表等对汇总报告中的数据进行多方式展示,能够为系统运行维护人员提供直观、明确的提示。
在图5中示出了本发明的第三实施例。
图5是根据本发明第三实施例的Java虚拟机内部对象监控系统的结构框图。参见图5,该监控系统包括监控器501和Java虚拟机502,且监控器501对Java虚拟机502进行监控。其中,监控器501包括:类信息获取模块5011,用于根据操作系统所分配的进程ID获取需要监控的Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表;对象分析模块5012,用于将所述类集合列表中的类信息根据过滤条件进行过滤并从过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中;汇总模块5013,用于对预设时间段内监控所得的所述关键数据进行汇总,产生汇总报告;多方式展示模块5014,用于将所述汇总报告中的数据以多种方式展示在页面上。
对于本实施例中监控器501中各模块,与第二实施例Java虚拟机内部对象监控装置中的各模块完全相同,这里不再赘述。
本发明第三实施例提出的Java虚拟机内部对象监控系统,具有如下特点:通过在对象分析模块中设置过滤条件,获取用户所关注的类信息,提高了定制化程度,并能够很好地实现与实际运行环境紧密地结合;另外,通过该模块对类对象信息进行分析,能够获得类对象的存活情况,占用内存大小等深层、具体的信息;通过在汇总模块中提供详实的汇总报告,能够为系统运行维护人员了解系统的运行状态提供很大的帮助;通过在多方式展示模块中对汇总报告中的数据进行多方式展示,能够为系统运行维护人员提供直观、明确的提示。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (17)

1.一种Java虚拟机内部对象监控方法,其特征在于,所述监控方法包括:
根据操作系统所分配的进程ID获取需要监控的Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表;
将所述类集合列表中的类信息根据过滤条件进行过滤并从过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中;
对预设时间段内监控所得的所述关键数据进行汇总,产生汇总报告;
将所述汇总报告中的数据以多种方式展示在页面上。
2.根据权利要求1所述的Java虚拟机内部对象监控方法,其特征在于,所述根据操作系统所分配的进程ID获取需要监控的Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表的步骤,具体为:
根据操作系统所分配的进程ID获取运行的Java虚拟机进程集合;
从所述Java虚拟机进程集合中获取需要监控的Java虚拟机进程;
根据所述需要监控的Java虚拟机进程获取所述Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表。
3.根据权利要求1所述的Java虚拟机内部对象监控方法,其特征在于,所述将所述类集合列表中的类信息根据过滤条件进行过滤并从过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中的步骤,具体为:
将所述过滤条件与所述类集合列表中的类信息进行信息匹配,将信息匹配后符合所述过滤条件的类信息通过过滤方法获得过滤后的类信息;
从所述过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中。
4.根据权利要求3所述的Java虚拟机内部对象监控方法,其特征在于,
所述过滤条件包括:包名、类名、类对象数量或类对象的内存占用大小;所述过滤方法包括路由算法或正则匹配。
5.根据权利要求1所述的Java虚拟机内部对象监控方法,其特征在于,所述关键数据包括所述类对象的关键属性和根据所述关键属性计算的关键数据;
其中,所述关键属性包括:每个类对象的占用内存大小、所有类对象的占用内存大小、类对象数、内存区间的垃圾回收次数、Java虚拟机的回收次数和类的创建时间,其中,所述内存区间包括新生代区间、旧生代区间和持久代区间;
所述关键数值包括:内存垃圾回收比率、虚拟机占用的最大内存及最小内存、各个内存区间的大小和类对象的存活时间。
6.根据权利要求5所述的Java虚拟机内部对象监控方法,其特征在于,所述汇总报告包括:预设时间段内系统占用的最大内存及发生的时间;预设时间段内系统占用的最小内存及发生的时间;预设时间段内系统的类对象总数量;预设时间段内系统的类对象数超过阈值的类名、包名和占用内存大小;预设时间段内系统的类对象存活时间最长的类名、包名和占用内存大小;预设时间段内系统的垃圾回收次数,各内存区间的回收次数;预设时间段内超过正常内存阈值的内存大小,包含的类名、包名以及发生的时间。
7.根据权利要求1所述的Java虚拟机内部对象监控方法,其特征在于,所述多种方式包括:文字、表格、柱状图、饼状图、折线图或二位符合图。
8.根据权利要求1所述的Java虚拟机内部对象监控方法,其特征在于,所述汇总报告中的边界信息,通过颜色标识展示在页面上。
9.一种Java虚拟机内部对象监控装置,其特征在于,所述监控装置包括:
类信息获取模块,用于根据操作系统所分配的进程ID获取需要监控的Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表;
对象分析模块,用于将所述类集合列表中的类信息根据过滤条件进行过滤并从过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中;
汇总模块,用于对预设时间段内监控所得的所述关键数据进行汇总,产生汇总报告;
多方式展示模块,用于将所述汇总报告中的数据以多种方式展示在页面上。
10.根据权利要求9所述的Java虚拟机内部对象监控装置,其特征在于,所述类信息获取模块包括:
虚拟机进程集合获取子模块,用于根据操作系统所分配的进程ID获取运行的Java虚拟机进程集合;
需要监控的虚拟机进程获取子模块,用于从所述Java虚拟机进程集合中获取需要监控的Java虚拟机进程;
类加载树获取及转换子模块,用于根据所述需要监控的Java虚拟机进程获取所述Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表。
11.根据权利要求9所述的Java虚拟机内部对象监控装置,其特征在于,所述对象分析模块包括:
类信息过滤子模块,用于将所述过滤条件与所述类集合列表中的类信息进行信息匹配,将信息匹配后符合所述过滤条件的类信息通过过滤方法获得过滤后的类信息;
类对象关键数据分析子模块,从所述过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中。
12.根据权利要求11所述的Java虚拟机内部对象监控装置,其特征在于,所述过滤条件包括:包名、类名、类实例数量或类实例的内存占用大小;所述过滤方法包括路由算法或正则匹配。
13.根据权利要求9所述的Java虚拟机内部对象监控装置,其特征在于,所述关键数据包括所述类对象的关键属性和根据所述关键属性计算的关键数据;
其中,所述关键属性包括:每个类对象的占用内存大小、所有类对象的占用内存大小、类对象数、内存区间的垃圾回收次数、Java虚拟机的回收次数和类的创建时间,其中,所述内存区间包括新生代区间、旧生代区间和持久代区间;
所述关键数值包括:内存垃圾回收比率、虚拟机占用的最大内存及最小内存、各个内存区间的大小和类对象的存活时间。
14.根据权利要求13所述的Java虚拟机内部对象监控方法,其特征在于,所述汇总报告包括:预设时间段内系统占用的最大内存及发生的时间;预设时间段内系统占用的最小内存及发生的时间;预设时间段内系统的类对象总数量;预设时间段内系统的类对象数超过阈值的类名、包名和占用内存大小;预设时间段内系统的类对象存活时间最长的类名、包名和占用内存大小;预设时间段内系统的垃圾回收次数,各内存区间的回收次数;预设时间段内超过正常内存阈值的内存大小,包含的类名、包名以及发生的时间。
15.根据权利要求9所述的Java虚拟机内部对象监控装置,其特征在于,所述多种方式包括:文字、表格、柱状图、饼状图、折线图或二位符合图。
16.根据权利要求9所述的Java虚拟机内部对象监控装置,其特征在于,所述汇总报告中的边界信息,通过颜色标识展示在页面上。
17.一种JVM内部对象监控系统,其特征在于,所述监控系统包括监控器和Java虚拟机,其中,所述监控器包括:
类信息获取模块,用于根据操作系统所分配的进程ID获取需要监控的Java虚拟机进程的类加载树,并将所述类加载树转换成类集合列表;
对象分析模块,用于将所述类集合列表中的类信息根据过滤条件进行过滤并从过滤后的类信息中获取类对象信息,根据所述类对象信息分析类对象的关键数据,同时将所述关键数据保存在缓存和数据库中;
汇总模块,用于对预设时间段内监控所得的所述关键数据进行汇总,产生汇总报告;
多方式展示模块,用于将所述汇总报告中的数据以多种方式展示在页面上。
CN201310356930.6A 2013-08-15 2013-08-15 一种Java虚拟机内部对象监控方法、装置和系统 Active CN103440161B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310356930.6A CN103440161B (zh) 2013-08-15 2013-08-15 一种Java虚拟机内部对象监控方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310356930.6A CN103440161B (zh) 2013-08-15 2013-08-15 一种Java虚拟机内部对象监控方法、装置和系统

Publications (2)

Publication Number Publication Date
CN103440161A true CN103440161A (zh) 2013-12-11
CN103440161B CN103440161B (zh) 2017-03-29

Family

ID=49693852

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310356930.6A Active CN103440161B (zh) 2013-08-15 2013-08-15 一种Java虚拟机内部对象监控方法、装置和系统

Country Status (1)

Country Link
CN (1) CN103440161B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631662A (zh) * 2013-12-20 2014-03-12 普元信息技术股份有限公司 复杂事件处理云平台事件分析引擎容量评估的系统及方法
CN104407966A (zh) * 2014-12-19 2015-03-11 北京京东尚科信息技术有限公司 一种jvm的内存对象数量统计系统及方法
CN104503891A (zh) * 2014-12-10 2015-04-08 北京京东尚科信息技术有限公司 对jvm线程进行在线监控的方法和装置
CN105426221A (zh) * 2015-12-16 2016-03-23 广州华多网络科技有限公司 通过jvm安全上下文实现缓存的方法和系统
CN107797901A (zh) * 2017-10-25 2018-03-13 四川长虹电器股份有限公司 一种堆栈分析以及邮件实时报警的实现方法
CN108073441A (zh) * 2016-11-14 2018-05-25 阿里巴巴集团控股有限公司 一种虚拟机内存监管方法与设备
CN108874624A (zh) * 2018-05-31 2018-11-23 康键信息技术(深圳)有限公司 服务器、监控Java进程的方法及存储介质
CN109032835A (zh) * 2017-06-08 2018-12-18 龙芯中科技术有限公司 软件再生方法与装置
CN113238762A (zh) * 2021-05-10 2021-08-10 深圳前海微众银行股份有限公司 java应用远程部署方法、装置及设备
CN116340102A (zh) * 2023-03-28 2023-06-27 北京基调网络股份有限公司 一种内存溢出监测方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080243968A1 (en) * 2007-03-30 2008-10-02 Sap Ag Method and system for object age detection in garbage collection heaps
CN101403983A (zh) * 2008-11-25 2009-04-08 北京航空航天大学 基于虚拟机的多核处理器的资源监控方法及系统
CN102122263A (zh) * 2011-03-23 2011-07-13 成都勤智数码科技有限公司 一种java应用系统运行时监控方法和装置
CN103164455A (zh) * 2011-12-15 2013-06-19 百度在线网络技术(北京)有限公司 数据库的优化方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101883003A (zh) * 2009-05-08 2010-11-10 华北电力大学 一种计算机操作系统强制运行方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080243968A1 (en) * 2007-03-30 2008-10-02 Sap Ag Method and system for object age detection in garbage collection heaps
CN101403983A (zh) * 2008-11-25 2009-04-08 北京航空航天大学 基于虚拟机的多核处理器的资源监控方法及系统
CN102122263A (zh) * 2011-03-23 2011-07-13 成都勤智数码科技有限公司 一种java应用系统运行时监控方法和装置
CN103164455A (zh) * 2011-12-15 2013-06-19 百度在线网络技术(北京)有限公司 数据库的优化方法及装置

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631662B (zh) * 2013-12-20 2017-09-26 普元信息技术股份有限公司 复杂事件处理云平台事件分析引擎容量评估的系统及方法
CN103631662A (zh) * 2013-12-20 2014-03-12 普元信息技术股份有限公司 复杂事件处理云平台事件分析引擎容量评估的系统及方法
CN104503891A (zh) * 2014-12-10 2015-04-08 北京京东尚科信息技术有限公司 对jvm线程进行在线监控的方法和装置
CN104407966A (zh) * 2014-12-19 2015-03-11 北京京东尚科信息技术有限公司 一种jvm的内存对象数量统计系统及方法
CN104407966B (zh) * 2014-12-19 2017-05-24 北京京东尚科信息技术有限公司 一种jvm的内存对象数量统计系统及方法
CN105426221B (zh) * 2015-12-16 2018-11-06 广州华多网络科技有限公司 通过jvm安全上下文实现缓存的方法和系统
CN105426221A (zh) * 2015-12-16 2016-03-23 广州华多网络科技有限公司 通过jvm安全上下文实现缓存的方法和系统
CN108073441A (zh) * 2016-11-14 2018-05-25 阿里巴巴集团控股有限公司 一种虚拟机内存监管方法与设备
CN108073441B (zh) * 2016-11-14 2022-05-10 阿里巴巴集团控股有限公司 一种虚拟机内存监管方法与设备
CN109032835A (zh) * 2017-06-08 2018-12-18 龙芯中科技术有限公司 软件再生方法与装置
CN109032835B (zh) * 2017-06-08 2021-02-26 龙芯中科技术股份有限公司 软件再生方法与装置
CN107797901A (zh) * 2017-10-25 2018-03-13 四川长虹电器股份有限公司 一种堆栈分析以及邮件实时报警的实现方法
CN108874624A (zh) * 2018-05-31 2018-11-23 康键信息技术(深圳)有限公司 服务器、监控Java进程的方法及存储介质
CN108874624B (zh) * 2018-05-31 2023-03-28 康键信息技术(深圳)有限公司 服务器、监控Java进程的方法及存储介质
CN113238762A (zh) * 2021-05-10 2021-08-10 深圳前海微众银行股份有限公司 java应用远程部署方法、装置及设备
CN116340102A (zh) * 2023-03-28 2023-06-27 北京基调网络股份有限公司 一种内存溢出监测方法、装置、设备及存储介质
CN116340102B (zh) * 2023-03-28 2023-10-03 北京基调网络股份有限公司 一种内存溢出监测方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN103440161B (zh) 2017-03-29

Similar Documents

Publication Publication Date Title
CN103440161A (zh) 一种Java虚拟机内部对象监控方法、装置和系统
CN102117306B (zh) Etl数据处理过程的监控方法及其系统
CN102810057B (zh) 一种记录日志的方法
US7917815B2 (en) Multi-layer context parsing and incident model construction for software support
US7418453B2 (en) Updating a data warehouse schema based on changes in an observation model
CN109284251A (zh) 日志管理方法、装置、计算机设备以及存储介质
CN103473108A (zh) 一种Java代码生成方法
CN110990391A (zh) 多源异构数据的整合方法、系统、计算机设备及存储介质
CN102096688A (zh) 数据报表的生成方法及装置
CN101859303A (zh) 元数据管理方法及管理系统
CN109299074B (zh) 一种基于模板化数据库视图的数据校验方法及系统
CN102222278A (zh) 一种运维流程定制的方法及装置
EP2166496A1 (en) Method, system, and computer for analytical reporting and archiving of data
CN105205121A (zh) 一种处理数据监控的方法
CN104679500A (zh) 实体类自动生成实现方法及装置
CN105260300A (zh) 基于会计准则通用分类标准应用平台的业务测试方法
CN104156198A (zh) 一种自动生成软件集成版本更新说明方法及装置
KR101198397B1 (ko) 원자력 발전소 출력운전 중 범용 리스크감시 시스템 및 그 방법
CN100471136C (zh) 一种配置规则检查方法及装置
CN114185750A (zh) 流程监控方法、装置、设备及存储介质
Engel et al. ysla: reusable and configurable SLAs for large-scale SLA management
CN110941422B (zh) 代码自动生成方法、代码生成器及可读存储介质
CN111881660A (zh) 报表生成方法、装置、计算机设备和存储介质
CN101470602A (zh) 一种依赖于关系型数据库的软件开发方法
CN117194757A (zh) 基于大数据的报表生成方法、装置、设备及存储介质

Legal Events

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

Inventor after: Bi Te

Inventor after: Yi Xu

Inventor after: Guo Yongqiang

Inventor before: Bi Te

CB03 Change of inventor or designer information
COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: BI TE TO: BI TE YI XU GUO YONGQIANG

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20180504

Address after: 223800 room 416-429, Hengtong mansion, 19 Hongze Hu Dong Road, Suyu District, Suqian, Jiangsu, -YS00157

Patentee after: Suqian Jingdong Heng Rui Enterprise Management Co., Ltd.

Address before: 100080 2 floor, No. 2, No. 20, Suzhou Street, Haidian District, Beijing

Patentee before: Beijing Jingdong Shangke Information Technology Co., Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20180716

Address after: 401121 6, Fortune 2, A building, Fortune Plaza, 15, fortune Avenue, Yubei District, Chongqing

Patentee after: Chongqing Tianji cloud Clothing Technology Co., Ltd.

Address before: 223800 room 416-429, Hengtong mansion, 19 Hongze Hu Dong Road, Suyu District, Suqian, Jiangsu, -YS00157

Patentee before: Suqian Jingdong Heng Rui Enterprise Management Co., Ltd.

TR01 Transfer of patent right