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 得到启动时虚拟机参数