4.2.1 jps:虚拟机进程状况工具

4.2.1 jps:虚拟机进程状况工具

JDK的很多小工具的名字都参考了UNIX命令的命名方式,jps(JVM Process Status Tool)是其中的典型。除了名字像UNIX的ps命令之外,它的功能也和ps命令类似可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(LVMID,Local Virtual Machine Identifier)。虽然功能比较单一,但它绝对是使用频率最高的JDK 命令行工具,因为其他的JDK工具大多需要输入它查询到的LVMID来确定要监控的是哪一个虚拟机进程。对于本地虚拟机进程来说,LVMID与操作系统的进程ID(PID,Process Identifier)是一致的,使用Windows的任务管理器或者UNIX的ps命令也可以查询到虚拟机进程的LVMID,但如果同时启动了多个虚拟机进程,无法根据进程名称定位时,那就必须依赖jps命令显示主类的功能才能区分了。

jps命令格式:

1
jps [ options ] [ hostid ]

jps执行样例:

1
2
3
4
jps -l
2388 D:\Develop\glassfish\bin\..\modules\admin-cli.jar
2764 com.sun.enterprise.glassfish.bootstrap.ASMain
3788 sun.tools.jps.Jps

jps还可以通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,参数hostid为RMI注册表中注册的主机名。jps的其他常用选项见表4-1。

image-20210917102722705

运行一个jar,然后运行jps命令。 运行效果:
1
2
3
PS G:\Blog\exam> jps -q
11216
10520
1
2
3
PS G:\Blog\exam> jps -m
11216 CommandsUI.jar
9480 Jps -m
1
2
3
PS G:\Blog\exam> jps -l
11216 G:\dev2\idea_workspace\MyJavaTools\runable\CommandsUI.jar
3688 jdk.jcmd/sun.tools.jps.Jps
1
2
3
4
PS G:\Blog\exam> jps -v
11216 CommandsUI.jar -Dfile.encoding=GBK
1336 Jps -Denv.class.path=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; -Dapplication.home=G:\java\java11\jdk-11.0.4 -Xms8m -Djdk.module.main=jdk.jcmd
PS G:\Blog\exam>