CN107239377A - 获取Java虚拟机运行状态的方法和装置 - Google Patents

获取Java虚拟机运行状态的方法和装置 Download PDF

Info

Publication number
CN107239377A
CN107239377A CN201610189171.2A CN201610189171A CN107239377A CN 107239377 A CN107239377 A CN 107239377A CN 201610189171 A CN201610189171 A CN 201610189171A CN 107239377 A CN107239377 A CN 107239377A
Authority
CN
China
Prior art keywords
virtual machine
java virtual
monitoring process
running status
status
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
CN201610189171.2A
Other languages
English (en)
Other versions
CN107239377B (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.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201610189171.2A priority Critical patent/CN107239377B/zh
Publication of CN107239377A publication Critical patent/CN107239377A/zh
Application granted granted Critical
Publication of CN107239377B publication Critical patent/CN107239377B/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/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种获取Java虚拟机的运行状态的方法和装置,包括:当检测到Java虚拟机启动时,启动第一常驻监控进程,以监控所述Java虚拟机的运行状态;将所述第一常驻监控进程监控到的所述Java虚拟机的运行状态添加到与所述第一常驻监控进程对应的状态文件中。不会消耗过多的CPU资源,不影响宿主机的性能。

Description

获取Java虚拟机运行状态的方法和装置
技术领域
本申请属于计算机技术领域,具体地说,涉及一种获取Java虚拟机运行状态的方法和装置。
背景技术
为了充分利用硬件资源,在宿主机中通常会同时启用多个java虚拟机。获取java虚拟机的运行状态信息,并提供给java虚拟机的用户,以便辅助用户对java虚拟机的运行参数调整优化或者对应用进行扩容。
目前获取java虚拟机的运行状态信息的方法通常是使用Java虚拟机状态监控工具(Java Virtual Machine statistics monitoring tool,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虚拟机启动的时候就被创建,它存储了被自动内存管理系统(Automatic Storage Management System),也就是常说的“垃圾收集器(Garbage Collector,GC)”所管理的各种对象,这些受管理的对象无需,也无法显式地被销毁。本申请实施例中所描述的Java虚拟机并未假设采用什么具体的技术去实现自动内存管理系统。Java虚拟机实现者可以根据系统的实际需要来选择自动内存管理技术。Java堆的容量可以是固定大小的;也可以随着程序执行的需求动态扩展,并在不需要过多空间时自动收缩。Java堆所使用的内存不需要保证是连续的。
本申请实施例所提供的获取Java虚拟机的运行状态的方法,适用于运行所述Java虚拟机的宿主设备,该宿主设备可以是计算机,移动电话,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。如图1所示该方法包括以下步骤。
S10,当检测到Java虚拟机启动时,启动第一常驻监控进程,以监控所述Java虚拟机的运行状态。
Java虚拟机的启动是通过引导类加载器(Bootstrap Class Loader)创建一个初始类(Initial Class)来完成,这个类是由Java虚拟机的具体实现指定。接着,Java虚拟机链接这个初始类,初始化并调用它的public voidmain(String[])方法。之后的整个执行过程都是由对此方法的调用开始。执行main方法中的Java虚拟机指令可能会导致Java虚拟机链接另外的一些类或接口,也可能会调用另外的方法。
宿主机检测检测到一个Java虚拟机启动时,继续通过jstat启动一个常驻监控进程与该已启动的Java虚拟机对应,以监控该已启动的Java虚拟机的运行状态,即该Java虚拟机对Java堆的使用情况。
可通过“jstat-gcutil<vmid>[<interval>[<count>]]”启动常驻监控进程,其中,vmid代表虚拟机的进程号,interval代表间隔时间,单位为秒或者毫秒,count代表打印次数,如果缺省则代表打印无数次。常驻监控进程的输出格式如下:
S0 S1 E O P YGC YGCT FGC FGCT GCT;
其中,S0代表Java堆上的Survivor space 0区已使用空间的百分比;S1代表Java堆上的Survivor space 1区已使用空间的百分比;E代表Java堆上的Eden space区已使用空间的百分比;O代表Java堆上的Old space区已使用空间的百分比;P代表Perm space区已使用空间的百分比;YGC代表从应用程序启动到采样时发生Young GC的次数;YGCT代表从应用程序启动到采样时Young GC所用的时间(单位秒);FGC代表从应用程序启动到采样时发生Full GC的次数;FGCT代表从应用程序启动到采样时Full GC所用的时间(单位秒);GCT代表从应用程序启动到采样时用于垃圾回收的总时间(单位秒)。例如,jstat-gcutil 25444 1000,其中,25444代表Java虚拟机的进程号,1000代表间隔时间为1000毫秒,打印次数未设置代表打印无数次。
S11,将第一常驻监控进程监控到的Java虚拟机的运行状态添加到与第一常驻监控进程对应的状态文件中。
在jstat的常驻监控进程启动后,创建一个与该常驻监控进程对应的状态文件,将监控到的Java虚拟机的运行状态打印输出至该状态文件并保存在该状态文件中,该状态文件的名称可以是该Java虚拟机的进程标识(ProcessIdentification,PID)。
这样,利用jstat的特性——常驻监控进程对CPU的消耗可忽略不计,解决了附着(attach)Java虚拟机进程获取运行状态时CPU占用过高,影响宿主机运行状态的问题,本申请实施例创建一个jstat常驻进程时,只会引起CPU较小的抖动,但不会消耗过多的CPU资源。
上述实施例中,该获取Java虚拟机的运行状态的方法可进一步包括以下步骤,如图2所示。
S12,创建与第一常驻监控进程对应的第一定时任务,以周期性的从状态文件中读取Java虚拟机的运行状态。
宿主机启动第一常驻监控进程后,创建第一定时任务与该第一常驻监控进程对应,该第一定时任务周期性(例如每秒一次)的从状态文件中读取Java虚拟机的运行状态。可以每次读取该状态文件中的最后一条记录(最后一条记录是jstat常驻监控进程最新写入到状态文件中的,代表着获取到的该Java虚拟机的最新运行状态),以获得该Java虚拟机最新的运行状态。
S13,将读取到的Java虚拟机的运行状态上传至服务端。
预设服务端的IP地址和存储路径,宿主机将读取到的Java虚拟机的运行状态根据该IP地址和存储路径上传至服务端进行保存,供开发人员了解Java虚拟机实际运行状态信息,以便对Java虚拟机的运行参数进行调整优化。
上述实施例中,该获取Java虚拟机的运行状态的方法可进一步包括以下步骤,如图3所示。
S14,创建与第一常驻监控进程对应的第二定时任务,以周期性的检测状态文件的大小是否大于或等于预设阈值;
宿主机启动第一常驻监控进程后,创建第二定时任务与该第一常驻监控进程对应,该第二定时任务周期性的检测状态文件的大小是否大于或等于预设阈值。随着jstat常驻监控进程不断将Java虚拟机的运行状态写入状态文件,该状态文件的大小会逐渐增大,为了防止该状态文件占用过多存储空间,可以在状态文件的大小大于或等于预设阈值时(例如,状态文件的大小大于或等于5MB时),对过大的状态文件进行清理。
S15,当状态文件的大小大于或等于预设阈值时,杀死第一常驻监控进程并删除状态文件。
由于该状态文件与jstat常驻监控进程对应,为了使jstat常驻监控进程不再向该状态文件写入Java虚拟机的运行状态,需要先杀死该jstat常驻监控进程。在杀死该jstat常驻监控进程之后,删除对应的状态文件。
S16,启动第二常驻监控进程,以继续监控Java虚拟机的运行状态。
为了继续监控Java虚拟机的运行状态,需要重新启动一个jstat常驻监控进程。同时创建一个新的状态文件以对应该重新启动的jstat常驻监控进程。该重新启动的jstat常驻监控进程将监控到的运行状态写入新的状态文件中。重新启动jstat常驻监控进程后会再次创建与之对应的第二定时任务,以便继续定期检测新的状态文件的大小。
此外,上述定期上报运行状态至服务端的第一定时任务和定期检测状态文件大小的第二定时任务可以同时被创建并运行于宿主机,如图4所示。当第一定时任务周期性的上报Java虚拟机的运行状态至客户端;第二定时任务周期性的检测状态文件的大小,当状态文件的大小大于或等于预设阈值时,杀死该jstat常驻监控进程并删除对应的状态文件,然后,重新启动一个jstat常驻监控进程并创建对应的第一定时任务和第二定时任务。这样,既可以定期上报运行状态至服务端,又能够防止状态文件过大而占用过多存储空间。
以上实施例中获取Java虚拟机的运行状态的方法是宿主机针对一个Java虚拟机的角度而言的。而在宿主机中可同时运行多个Java虚拟机,当同时运行多个Java虚拟机时,宿主机同时运行与所述多个Java虚拟机数量相当的jstat常驻监控进程,以分别对应一个Java虚拟机并分别监控对应的Java虚拟机的运行状态。例如,同时运行Java虚拟机A、B、C,那么也就同时运行对应的jstat常驻监控进程A1、B1、C1;常驻监控进程A1对应状态文件a1、第一定时任务A11和第二定时任务A12,常驻监控进程B1对应状态文件b1、第一定时任务B11和第二定时任务B12,常驻监控进程C1对应状态文件c1、第一定时任务C11和第二定时任务C12。
常驻监控进程A1将Java虚拟机A的运行状态写入到状态文件a1,常驻监控进程B1将Java虚拟机B的运行状态写入到状态文件b1,常驻监控进程C1将Java虚拟机C的运行状态写入到状态文件c1。
第一定时任务A11周期性的从状态文件a1中读取Java虚拟机A的运行状态并上传到服务端,第一定时任务B11周期性的从状态文件b1中读取Java虚拟机B的运行状态并上传到服务端,第一定时任务C11周期性的从状态文件c1中读取Java虚拟机C的运行状态并上传到服务端。
第二定时任务A12周期性的检测状态文件a1的大小是否大于或等于预设阈值,当状态文件a1的大小大于或等于预设阈值时,杀死jstat常驻监控进程A1,删除对应的状态文件a1,重新启动一个新的jstat常驻监控进程A2来继续监控Java虚拟机A,同时创建与jstat常驻监控进程A2对应的状态文件a2、第一定时任务A21和第二定时任务A22。同理,第二定时任务B12周期性的检测状态文件b1的大小是否大于或等于预设阈值,当状态文件b1的大小大于或等于预设阈值时,杀死jstat常驻监控进程B1,删除对应的状态文件b1,重新启动一个新的jstat常驻监控进程B2来继续监控Java虚拟机B,同时创建与jstat常驻监控进程B2对应的状态文件b2、第一定时任务B21和第二定时任务B22。同理,第二定时任务C12周期性的检测状态文件c1的大小是否大于或等于预设阈值,当状态文件c1的大小大于或等于预设阈值时,杀死jstat常驻监控进程C1,删除对应的状态文件c1,重新启动一个新的jstat常驻监控进程C2来继续监控Java虚拟机C,同时创建与jstat常驻监控进程C2对应的状态文件c2、第一定时任务C21和第二定时任务C22。
宿主机同时运行多个Java虚拟机时,虽然重新启动新的jstat常驻监控进程的次数会增多,但由于这种重启的行为是离散的,几乎不会出现并发重启很多jstat常驻监控进程的情形,因此在宿主机同时运行多个Java虚拟机时,采用本申请实施例提供的获取Java虚拟机的运行状态的方法也不会影响到宿主机的性能。
图5是本申请实施例提供的一种获取Java虚拟机的运行状态的装置,该装置包括:
第一启动模块20,用于当检测到Java虚拟机启动时,启动第一常驻监控进程,以监控Java虚拟机的运行状态;
第一添加模块21,用于将第一常驻监控进程监控到的Java虚拟机的运行状态添加到与第一常驻监控进程对应的状态文件中。
该获取Java虚拟机的运行状态的装置还可以进一步包括:
第一创建模块22,用于创建与所述第一常驻监控进程对应的第一定时任务,以周期性的从所述状态文件中读取所述Java虚拟机的运行状态;
第一上传模块23,用于将读取到的所述Java虚拟机的运行状态上传至服务端。
该获取Java虚拟机的运行状态的装置还可以进一步包括:
第二创建模块24,用于创建与所述第一常驻监控进程对应的第二定时任务,以周期性的检测所述状态文件的大小是否大于或等于预设阈值;
第一处理模块25,用于当所述状态文件的大小大于或等于预设阈值时,杀死所述第一常驻监控进程并删除所述状态文件;
第二启动模块26,用于启动第二常驻监控进程,以继续监控所述Java虚拟机的运行状态。
图6是本申请实施例提供的一种获取Java虚拟机的运行状态的装置,该装置包括:
第一运行模块30,用于当同时运行多个Java虚拟机时,同时运行与所述多个Java虚拟机数量相当的第一常驻监控进程,以分别对应一个Java虚拟机并分别监控对应的Java虚拟机的运行状态;
第二添加模块31,用于将每个所述第一常驻监控进程监控到的Java虚拟机的运行状态,分别添加到每个所述第一常驻监控进程所对应的状态文件中。
该获取Java虚拟机的运行状态的装置还可以进一步包括:
第二运行模块32,用于在所述第一常驻监控进程对Java虚拟机进行监控时,运行与所述第一常驻监控进程对应的第一定时任务,以周期性的从所述状态文件中读取对应的Java虚拟机的运行状态;
第二上传模块33,用于将读取到的Java虚拟机的运行状态上传至服务端。
该获取Java虚拟机的运行状态的装置还可以进一步包括:
第三运行模块34,用于在所述第一常驻监控进程对Java虚拟机进行监控时,运行与所述第一常驻监控进程对应的第二定时任务,以周期性的检测所述状态文件的大小是否大于或等于预设阈值;
第二处理模块35,用于当所述状态文件的大小大于或等于预设阈值时,杀死对应的第一常驻监控进程并删除所述状态文件;
第三启动模块36,用于启动与所述Java虚拟机对应的第二常驻监控进程,以继续监控所述Java虚拟机的运行状态。
此外,本申请实施例中可以通过硬件处理器(hardware processor)来实现上述各个功能模块。
本申请实施例还提供了一种获取Java虚拟机的运行状态的装置,包括:第一处理器;用于存储所述第一处理器可执行指令的第一存储器;其中,所述第一处理器被配置为:当检测到Java虚拟机启动时,启动第一常驻监控进程,以监控所述Java虚拟机的运行状态;将所述第一常驻监控进程监控到的所述Java虚拟机的运行状态添加到与所述第一常驻监控进程对应的状态文件中。
该第一处理器可以进一步被配置为:创建与所述第一常驻监控进程对应的第一定时任务,以周期性的从所述状态文件中读取所述Java虚拟机的运行状态;将读取到的所述Java虚拟机的运行状态上传至服务端。
该第一处理器可以进一步被配置为:创建与所述第一常驻监控进程对应的第二定时任务,以周期性的检测所述状态文件的大小是否大于或等于预设阈值;当所述状态文件的大小大于或等于预设阈值时,杀死所述第一常驻监控进程并删除所述状态文件;启动第二常驻监控进程,以继续监控所述Java虚拟机的运行状态。
本申请实施例还提供了一种获取Java虚拟机的运行状态的装置,包括:第二处理器;用于存储所述第二处理器可执行指令的第二存储器;其中,所述第二处理器被配置为:当同时运行多个Java虚拟机时,同时运行与所述多个Java虚拟机数量相当的第一常驻监控进程,以分别对应一个Java虚拟机并分别监控对应的Java虚拟机的运行状态;将每个所述第一常驻监控进程监控到的Java虚拟机的运行状态,分别添加到每个所述第一常驻监控进程所对应的状态文件中。
该第二处理器可以进一步被配置为:在所述第一常驻监控进程对Java虚拟机进行监控时,运行与所述第一常驻监控进程对应的第一定时任务,以周期性的从所述状态文件中读取对应的Java虚拟机的运行状态;将读取到的Java虚拟机的运行状态上传至服务端。
该第二处理器可以进一步被配置为:在所述第一常驻监控进程对Java虚拟机进行监控时,运行与所述第一常驻监控进程对应的第二定时任务,以周期性的检测所述状态文件的大小是否大于或等于预设阈值;当所述状态文件的大小大于或等于预设阈值时,杀死对应的第一常驻监控进程并删除所述状态文件;启动与所述Java虚拟机对应的第二常驻监控进程,以继续监控所述Java虚拟机的运行状态。
此外,本申请实施例还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述获取Java虚拟机的运行状态的方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。

Claims (14)

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虚拟机的运行状态上传至服务端。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二创建模块,用于创建与所述第一常驻监控进程对应的第二定时任务,以周期性的检测所述状态文件的大小是否大于或等于预设阈值;
第一处理模块,用于当所述状态文件的大小大于或等于预设阈值时,杀死所述第一常驻监控进程并删除所述状态文件;
第二启动模块,用于启动第二常驻监控进程,以继续监控所述Java虚拟机的运行状态。
10.一种获取Java虚拟机的运行状态的装置,其特征在于,包括:
第一运行模块,用于当同时运行多个Java虚拟机时,同时运行与所述多个Java虚拟机数量相当的第一常驻监控进程,以分别对应一个Java虚拟机并分别监控对应的Java虚拟机的运行状态;
第二添加模块,用于将每个所述第一常驻监控进程监控到的Java虚拟机的运行状态,分别添加到每个所述第一常驻监控进程所对应的状态文件中。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第二运行模块,用于在所述第一常驻监控进程对Java虚拟机进行监控时,运行与所述第一常驻监控进程对应的第一定时任务,以周期性的从所述状态文件中读取对应的Java虚拟机的运行状态;
第二上传模块,用于将读取到的Java虚拟机的运行状态上传至服务端。
12.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第三运行模块,用于在所述第一常驻监控进程对Java虚拟机进行监控时,运行与所述第一常驻监控进程对应的第二定时任务,以周期性的检测所述状态文件的大小是否大于或等于预设阈值;
第二处理模块,用于当所述状态文件的大小大于或等于预设阈值时,杀死对应的第一常驻监控进程并删除所述状态文件;
第三启动模块,用于启动与所述Java虚拟机对应的第二常驻监控进程,以继续监控所述Java虚拟机的运行状态。
13.一种获取Java虚拟机的运行状态的装置,其特征在于,包括:
第一处理器;
用于存储所述第一处理器可执行指令的第一存储器;
其中,所述第一处理器被配置为:
当检测到Java虚拟机启动时,启动第一常驻监控进程,以监控所述Java虚拟机的运行状态;
将所述第一常驻监控进程监控到的所述Java虚拟机的运行状态添加到与所述第一常驻监控进程对应的状态文件中。
14.一种获取Java虚拟机的运行状态的装置,其特征在于,包括:
第二处理器;
用于存储所述第二处理器可执行指令的第二存储器;
其中,所述第二处理器被配置为:
当同时运行多个Java虚拟机时,同时运行与所述多个Java虚拟机数量相当的第一常驻监控进程,以分别对应一个Java虚拟机并分别监控对应的Java虚拟机的运行状态;
将每个所述第一常驻监控进程监控到的Java虚拟机的运行状态,分别添加到每个所述第一常驻监控进程所对应的状态文件中。
CN201610189171.2A 2016-03-29 2016-03-29 获取Java虚拟机运行状态的方法和装置 Active CN107239377B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610189171.2A CN107239377B (zh) 2016-03-29 2016-03-29 获取Java虚拟机运行状态的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610189171.2A CN107239377B (zh) 2016-03-29 2016-03-29 获取Java虚拟机运行状态的方法和装置

Publications (2)

Publication Number Publication Date
CN107239377A true CN107239377A (zh) 2017-10-10
CN107239377B CN107239377B (zh) 2021-02-26

Family

ID=59983438

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610189171.2A Active CN107239377B (zh) 2016-03-29 2016-03-29 获取Java虚拟机运行状态的方法和装置

Country Status (1)

Country Link
CN (1) CN107239377B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108804289A (zh) * 2018-06-04 2018-11-13 郑州云海信息技术有限公司 一种进程监控的方法、装置及计算机存储介质
CN108833208A (zh) * 2018-06-21 2018-11-16 新华三技术有限公司 一种对虚拟网络节点的检测方法及装置
CN112181544A (zh) * 2020-11-27 2021-01-05 深圳开源互联网安全技术有限公司 Java应用的运行方法、系统、装置及计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101320389A (zh) * 2008-06-30 2008-12-10 中兴通讯股份有限公司 文件管理方法和装置
CN103544434A (zh) * 2013-11-12 2014-01-29 北京网秦天下科技有限公司 用于确保应用程序安全运行的方法和终端
US20140310235A1 (en) * 2013-04-11 2014-10-16 Oracle International Corporation Seasonal trending, forecasting, anomaly detection, and endpoint prediction of java heap usage
CN104301360A (zh) * 2013-07-19 2015-01-21 阿里巴巴集团控股有限公司 一种日志数据记录的方法、日志服务器及系统
CN104407966A (zh) * 2014-12-19 2015-03-11 北京京东尚科信息技术有限公司 一种jvm的内存对象数量统计系统及方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101320389A (zh) * 2008-06-30 2008-12-10 中兴通讯股份有限公司 文件管理方法和装置
US20140310235A1 (en) * 2013-04-11 2014-10-16 Oracle International Corporation Seasonal trending, forecasting, anomaly detection, and endpoint prediction of java heap usage
CN104301360A (zh) * 2013-07-19 2015-01-21 阿里巴巴集团控股有限公司 一种日志数据记录的方法、日志服务器及系统
CN103544434A (zh) * 2013-11-12 2014-01-29 北京网秦天下科技有限公司 用于确保应用程序安全运行的方法和终端
CN104407966A (zh) * 2014-12-19 2015-03-11 北京京东尚科信息技术有限公司 一种jvm的内存对象数量统计系统及方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108804289A (zh) * 2018-06-04 2018-11-13 郑州云海信息技术有限公司 一种进程监控的方法、装置及计算机存储介质
CN108833208A (zh) * 2018-06-21 2018-11-16 新华三技术有限公司 一种对虚拟网络节点的检测方法及装置
CN112181544A (zh) * 2020-11-27 2021-01-05 深圳开源互联网安全技术有限公司 Java应用的运行方法、系统、装置及计算机可读存储介质

Also Published As

Publication number Publication date
CN107239377B (zh) 2021-02-26

Similar Documents

Publication Publication Date Title
US10289837B2 (en) Log information generation apparatus and recording medium, and log information extraction apparatus and recording medium
CN105204979B (zh) 安卓日志的记录方法及移动终端
CN109766701A (zh) 针对异常进程结束操作的处理方法、装置、及电子装置
CN105743730B (zh) 为移动终端的网页服务提供实时监控的方法及其系统
CN106201844B (zh) 一种日志收集方法及装置
CN111786959B (zh) 安全防护方法、waf系统、电子设备及存储介质
CN106844136A (zh) 一种程序崩溃信息的收集方法及系统
WO2023115999A1 (zh) 设备状态监控方法、装置、设备及计算机可读存储介质
EP3707596A1 (en) Vulnerability assessment of containerised installation
CN110401580B (zh) 基于心跳机制的网页状态监听方法及相关设备
CN107239377A (zh) 获取Java虚拟机运行状态的方法和装置
CN107357731A (zh) 进程产生core dump问题的监控、分析和处理方法
CN116502220B (zh) 一种对抗性Java内存马的检测方法及处理方法
CN111859399A (zh) 一种基于oval的漏洞检测方法及装置
CN105045641B (zh) 一种启动组件的界面的方法及装置
Cinque et al. How do mobile phones fail? a failure data analysis of symbian os smart phones
RU2177636C2 (ru) Сбор данных об отказах как часть перезапуска компьютерного устройства
CN110908837A (zh) 应用程序异常处理方法、装置、电子设备及存储介质
US11630714B2 (en) Automated crash recovery
CN115562933A (zh) 作业监控数据的处理方法及装置、存储介质、电子设备
CN115828256A (zh) 一种越权与未授权逻辑漏洞检测方法
CN110309441A (zh) 页面展示方法、装置和设备
CN106354602A (zh) 一种服务监控方法和设备
CN112256384A (zh) 基于容器技术的服务集合处理方法、装置和计算机设备
KR102336466B1 (ko) 악성코드 탐지장치 및 방법, 컴퓨터 판독 가능한 기록 매체 및 컴퓨터 프로그램

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
TR01 Transfer of patent right

Effective date of registration: 20230522

Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province

Patentee after: Aliyun Computing Co.,Ltd.

Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK

Patentee before: ALIBABA GROUP HOLDING Ltd.

TR01 Transfer of patent right