jdk小工具之jps

时间:2022-12-24 09:04:20

jps(JVM Process Status),顾名思义,java 虚拟机进程状态,是jdk小工具包中最常用的工具之一。


jdk 的很多小工具的名称都参考了UNIX命名的方式,jps是其中的典型。

jps的功能也和ps命令类似:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main() 函数所在的类)名称以及这些进程的本地虚拟机唯一ID (local virtual machine identifier,LVMID)。


虽然功能比较单一,但它是使用频率最高的jdk命令行工具,因为其他的jdk工具大多需要输入它查询到的LVMID来确定要监控的是哪一个虚拟机进程。

对于本地虚拟机进程来说,LVMID与操作系统的进程ID(Process Identifier,PID)是一致的,使用Windows 的任务管理器或者UNIX系统的ps命令也可以查询到虚拟机进程的LVMID,但是如果同时启动了多个虚拟机进程,无法根据进程名称定位时,那就只能依赖jps命令显示主类的功能才能区分了。

jps命令格式:

jps  [ options ] [ hostid ]


参考 Oracle官网 jps 介绍http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jps.html


jps 样例:

C:\Users\Administrator>jps -l
7024 sun.tools.jps.Jps
5920 D:\DEV_ENV\eclipse\\plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

C:\Users\Administrator>

jps 可以通过RMI 协议查询开启了RMI服务的远程虚拟机进程状态,hostid 为RMI 注册表中的主机名。

jps 的其他常用选项


选  项

作      用

-q

只输出LVMID,省略主类的名称

-m

输出虚拟机进程启动时传递给主类main() 方法的参数

-l

输出主类的全名,如果进程执行的是jar包,输出jar路径

-v

输出虚拟机进程启动时JVM参数


示例:

C:\Users\Administrator>jps
12340 Jps
10140 Bootstrap
5920 org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

C:\Users\Administrator>
里面显示了三个java进程,一个是jps自己的应用,一个是Bootstrap,一个是eclipse的应用。

C:\Users\Administrator>jps -q
10140
13080
5920

C:\Users\Administrator>
使用 jps -q 参数,紧列出java进程的id号,在Linux系统中,java进程的id号即为程序的pid号。

C:\Users\Administrator>jps -m
13000 Jps -m
10140 Bootstrap start
5920 org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar -os win32 -ws win32 -arch x86_64 -showspl
ash D:\DEV_ENV\eclipse\\plugins\org.eclipse.platform_4.3.1.v20130911-1000\splash.bmp -launcher D:\DE
V_ENV\eclipse\eclipse.exe -name Eclipse --launcher.library D:\DEV_ENV\eclipse\\plugins/org.eclipse.e
quinox.launcher.win32.win32.x86_64_1.1.200.v20130807-1835\eclipse_1503.dll -startup D:\DEV_ENV\eclip
se\\plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar --launcher.appendVmargs -exitdata
e28_9c -product org.eclipse.epp.package.jee.product -vm C:\Windows\SYSTEM32\javaw.exe -vmargs -Dosgi
.requiredJavaVersion=1.6 -Xms40m -Xmx512m -XX:MaxPermSize=256m -jar D:\DEV_ENV\eclipse\\plugins/org.
eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

C:\Users\Administrator>

使用jps -m 得到各进程的输入参数

-m 为我们给jps 程序的输入参数

start 为tomcat默认启动时,给Bootstrap 的默认参数


C:\Users\Administrator>jps -l
12816 sun.tools.jps.Jps
10140 org.apache.catalina.startup.Bootstrap
5920 D:\DEV_ENV\eclipse\\plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

C:\Users\Administrator>

使用jps -l 得到主类的全名

jps 的主类为jdk下面lib 下面的tools.jar中的 sun.tools.jps.Jps 类

tomcat 的主类为 org.apache.catalina.startup.Bootstrap 类

eclipse的主类为 org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar 这个接触少,这里就不多说了


C:\Users\Administrator>jps -v
13052 Jps -Denv.class.path=D:\DEV_ENV\Java7\jdk1.7.0_60\lib\dt.jar;D:\DEV_ENV\Java7\jdk1.7.0_60\lib\
tools.jar -Dapplication.home=D:\DEV_ENV\Java7\jdk1.7.0_60 -Xms8m
10140 Bootstrap -Djava.util.logging.config.file=D:\DEV_ENV\apache-tomcat-6.0.39-windows-x64\conf\log
ging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.di
rs=D:\DEV_ENV\apache-tomcat-6.0.39-windows-x64\endorsed -Dcatalina.base=D:\DEV_ENV\apache-tomcat-6.0
.39-windows-x64 -Dcatalina.home=D:\DEV_ENV\apache-tomcat-6.0.39-windows-x64 -Djava.io.tmpdir=D:\DEV_
ENV\apache-tomcat-6.0.39-windows-x64\temp
5920 org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar -Dosgi.requiredJavaVersion=1.6 -Xms40m -X
mx512m -XX:MaxPermSize=256m

C:\Users\Administrator>

使用 jps -v 得到启动时虚拟机参数