获取Java虚拟机运行状态的方法和装置制造方法及图纸

技术编号:16353277 阅读:138 留言:0更新日期:2017-10-10 09:56
本申请公开了一种获取Java虚拟机的运行状态的方法和装置,包括:当检测到Java虚拟机启动时,启动第一常驻监控进程,以监控所述Java虚拟机的运行状态;将所述第一常驻监控进程监控到的所述Java虚拟机的运行状态添加到与所述第一常驻监控进程对应的状态文件中。不会消耗过多的CPU资源,不影响宿主机的性能。

Method and device for obtaining running state of Java virtual machine

The invention discloses a method and a device for obtaining a Java virtual machine running state includes: when the detected Java virtual machine startup, start the first permanent monitoring process, to monitor the running state of the Java virtual machine; add the running state of the Java virtual machine is the first permanent monitoring process to monitor the state file corresponding to the first permanent monitoring of the process. Not excessive consumption of CPU resources does not affect the performance of the host.

【技术实现步骤摘要】

本申请属于计算机
,具体地说,涉及一种获取Java虚拟机运行状态的方法和装置
技术介绍
为了充分利用硬件资源,在宿主机中通常会同时启用多个java虚拟机。获取java虚拟机的运行状态信息,并提供给java虚拟机的用户,以便辅助用户对java虚拟机的运行参数调整优化或者对应用进行扩容。目前获取java虚拟机的运行状态信息的方法通常是使用Java虚拟机状态监控工具(JavaVirtualMachinestatisticsmonitoringtool,jstat),jstat获取信息前需要先附着(attach)java虚拟机进程,附着瞬间会消耗一定的CPU资源。由于用户业务的需要,监控数据采集必须采用固定频率,当在某一宿主机中启动多个java虚拟机时,采集脚本同时附着所有的java虚拟机进程,会造成大量的CPU资源消耗,影响宿主机的性能。
技术实现思路
有鉴于此,本申请提供了一种获取Java虚拟机运行状态的方法和装置,以解决获取多个Java虚拟机运行状态时CPU资源占用过高,影响宿主机运行状态的技术问题。为了解决上述技术问题,本申请公开了一种获取Java虚拟机的运行状态的方法,包括:当检测到Java虚拟机启动时,启动第一常驻监控进程,以监控所述Java虚拟机的运行状态;将所述第一常驻监控进程监控到的所述Java虚拟机的运行状态添加到与所述第一常驻监控进程对应的状态文件中。为了解决上述技术问题,本申请还公开了一种获取Java虚拟机的运行状态的方法,包括:当同时运行多个Java虚拟机时,同时运行与所述多个Java虚拟机数量相当的第一常驻监控进程,以分别对应一个Java虚拟机并分别监控对应的Java虚拟机的运行状态;将每个所述第一常驻监控进程监控到的Java虚拟机的运行状态,分别添加到每个所述第一常驻监控进程所对应的状态文件中。为了解决上述技术问题,本申请还公开了一种获取Java虚拟机的运行状态的装置,包括:第一启动模块,用于当检测到Java虚拟机启动时,启动第一常驻监控进程,以监控所述Java虚拟机的运行状态;第一添加模块,用于将所述第一常驻监控进程监控到的所述Java虚拟机的运行状态添加到与所述第一常驻监控进程对应的状态文件中。为了解决上述技术问题,本申请还公开了一种获取Java虚拟机的运行状态的装置,包括:第一运行模块,用于当同时运行多个Java虚拟机时,同时运行与所述多个Java虚拟机数量相当的第一常驻监控进程,以分别对应一个Java虚拟机并分别监控对应的Java虚拟机的运行状态;第二添加模块,用于将每个所述第一常驻监控进程监控到的Java虚拟机的运行状态,分别添加到每个所述第一常驻监控进程所对应的状态文件中。为了解决上述技术问题,本申请还公开了一种获取Java虚拟机的运行状态的装置,包括:第一处理器;用于存储所述第一处理器可执行指令的第一存储器;其中,所述第一处理器被配置为:当检测到Java虚拟机启动时,启动第一常驻监控进程,以监控所述Java虚拟机的运行状态;将所述第一常驻监控进程监控到的所述Java虚拟机的运行状态添加到与所述第一常驻监控进程对应的状态文件中。为了解决上述技术问题,本申请还公开了一种获取Java虚拟机的运行状态的装置,包括:第二处理器;用于存储所述第二处理器可执行指令的第二存储器;其中,所述第二处理器被配置为:当同时运行多个Java虚拟机时,同时运行与所述多个Java虚拟机数量相当的第一常驻监控进程,以分别对应一个Java虚拟机并分别监控对应的Java虚拟机的运行状态;将每个所述第一常驻监控进程监控到的Java虚拟机的运行状态,分别添加到每个所述第一常驻监控进程所对应的状态文件中。与现有技术相比,本申请可以获得包括以下技术效果:利用jstat的特性——常驻监控进程对CPU的消耗可忽略不计,本申请实施例创建一个jstat常驻进程时,只会引起CPU较小的抖动,但不会消耗过多的CPU资源,不影响宿主机的性能。当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是本申请实施例提供的一种获取Java虚拟机的运行状态的方法的流程图;图2是本申请实施例提供的一种获取Java虚拟机的运行状态的方法的流程图;图3是本申请实施例提供的一种获取Java虚拟机的运行状态的方法的流程图;图4是本申请实施例提供的一种获取Java虚拟机的运行状态的方法的流程图;图5是本申请实施例提供的一种获取Java虚拟机的运行状态的装置的框图;图6是本申请实施例提供的一种获取Java虚拟机的运行状态的装置的框图。具体实施方式以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。本申请实施例在Java虚拟机启动后,启动jstat的常驻监控进程来监控Java虚拟机的运行状态,并将监控到运行状态添加至对应的状态文件中。由于jstat的常驻监控进程对CPU的消耗可以忽略不计,创建一个jstat常驻监控进程时,只会引起CPU较小的抖动,但不会消耗过多的CPU资源,因而解决了通过附着(attach)Java虚拟机进程的方式会占用过多CPU资源而影响宿主机运行状态的技术问题。本申请实施例中所述的Java虚拟机的运行状态是指Java虚拟机运行期间Java堆的使用情况,如垃圾回收次数,垃圾回收时间等。在Java虚拟机中,堆(Heap)是可供各条线程共享的运行时内存区域,也是供所有类实例和数组对象分配内存的区域。Java堆在Java虚拟机启动的时候就被创建,它存储了被自动内存管理系统(AutomaticStorageManagementSystem),也就是常说的“垃圾收集器(GarbageCollector,GC)”所管理的各种对象,这些受管理的对象无需,也无法显式地被销毁。本申请实施例中所描述的Java虚拟机并未假设采用什么具体的技术去实现自动内存管理系统。Java虚拟机实现者可以根据系统的实际需要来选择自动内存管理技术。Java堆的容量可以是固定大小的;也可以随着程序执行的需求动态扩展,并在不需要过多空间时自动收缩。Java堆所使用的内存不需要保证是连续的。本申请实施例所提供的获取Java虚拟机的运行状态的方法,适用于运行所述Java虚拟机的宿主设备,该宿主设备可以是计算机,移动电话,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。如图1所示该方法包括以下步骤。S10,当检测到Java虚拟机启动时,启动第一常驻监控进程,以监控所述Java虚拟机的运行状态。Java虚拟机的启动是通过引导类加载器(BootstrapClassLoader)创建一个初始类(InitialClass)来完成,这个类是由Java虚拟机的具体实现指定。接着,Java虚拟机链接这个初始类,初始化并调用它的publicvoidmain(String[])方法。之后的整个执行过程都是由对此方法的调用开始。执行ma本文档来自技高网...
获取Java虚拟机运行状态的方法和装置

【技术保护点】
一种获取Java虚拟机的运行状态的方法,其特征在于,包括:当检测到Java虚拟机启动时,启动第一常驻监控进程,以监控所述Java虚拟机的运行状态;将所述第一常驻监控进程监控到的所述Java虚拟机的运行状态添加到与所述第一常驻监控进程对应的状态文件中。

【技术特征摘要】
1.一种获取Java虚拟机的运行状态的方法,其特征在于,包括:当检测到Java虚拟机启动时,启动第一常驻监控进程,以监控所述Java虚拟机的运行状态;将所述第一常驻监控进程监控到的所述Java虚拟机的运行状态添加到与所述第一常驻监控进程对应的状态文件中。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:创建与所述第一常驻监控进程对应的第一定时任务,以周期性的从所述状态文件中读取所述Java虚拟机的运行状态;将读取到的所述Java虚拟机的运行状态上传至服务端。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:创建与所述第一常驻监控进程对应的第二定时任务,以周期性的检测所述状态文件的大小是否大于或等于预设阈值;当所述状态文件的大小大于或等于预设阈值时,杀死所述第一常驻监控进程并删除所述状态文件;启动第二常驻监控进程,以继续监控所述Java虚拟机的运行状态。4.一种获取Java虚拟机的运行状态的方法,其特征在于,包括:当同时运行多个Java虚拟机时,同时运行与所述多个Java虚拟机数量相当的第一常驻监控进程,以分别对应一个Java虚拟机并分别监控对应的Java虚拟机的运行状态;将每个所述第一常驻监控进程监控到的Java虚拟机的运行状态,分别添加到每个所述第一常驻监控进程所对应的状态文件中。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:在所述第一常驻监控进程对Java虚拟机进行监控时,运行与所述第一常驻监控进程对应的第一定时任务,以周期性的从所述状态文件中读取对应的Java虚拟机的运行状态;将读取到的Java虚拟机的运行状态上传至服务端。6.根据权利要求4所述的方法,其特征在于,所述方法还包括:在所述第一常驻监控进程对Java虚拟机进行监控时,运行与所述第一常驻监控进程对应的第二定时任务,以周期性的检测所述状态文件的大小是否大于或等于预设阈值;当所述状态文件的大小大于或等于预设阈值时,杀死对应的第一常驻监控进程并删除所述状态文件;启动与所述Java虚拟机对应的第二常驻监控进程,以继续监控所述Java虚拟机的运行状态。7.一种获取Java虚拟机的运行状态的装置,其特征在于,包括:第一启动模块,用于当检测到Java虚拟机启动时,启动第一常驻监控进程,以监控所述Java虚拟机的运行状态;第一添加模块,用于将所述第一常驻监控进程监控到的所述Java虚拟机的运行状态添加到与所述第一常驻监控进程对应的状态文件中。8.根据权利要求7所述的装置,其特征在于,所述装置还包括:第一创建模块,用于创建与所述第一常驻监控进程对应的第一定时任务,以周期性的从所述状态文件中读取所述Java虚拟机的运行状态;第一上传模块,用于将读取到的所述Java虚拟机的运...

【专利技术属性】
技术研发人员:茆亮亮
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1