1. 概述
1.1. 工具简介
jps(Java Process Status Tools),是JDK自带的查看Java进程状态的工具.该命令和Unix系统命令的命名风格一致,功能与ps
命令接近,用于显示正在OS上运行的Java进程信息。
该命令的使用频率极高,因为其他的JDK工具大部分是需要基于LVMID来确定监控哪一个虚拟机进程,对本地虚拟机进程而言,LVMID与OS的进程PID(Process Identity)一致。
1.2. 命令帮助
wanghui@Mokalas-MacBook-Pro ~ $ jps -help
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>]
Definitions:
<hostid>: <hostname>[:<port>]
2. jps常用选项
先写一个简单的Java类,并运行之,类定义如下:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;
/**
* @Author 辉辉大侠
* @Date 2017-03-11 09:43
* @Motto 一生伏首拜阳明
*/
public class JPSMain {
public static void main(String[] args) throws InterruptedException {
int i = 100;
while (i > 0) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(sdf.format(new Date()));
TimeUnit.SECONDS.sleep(10);
}
}
}
2.1. 不带任何选项
wanghui@Mokalas-MacBook-Pro ~ $ jps
44761 JPSMain
44956 Jps
输出进程id和运行的类
2.2. -q参数
wanghui@Mokalas-MacBook-Pro ~ $ jps -q
44761
44989
仅输出本地虚拟机进程标识符(LVMID)列表,不输出其他任何信息
2.3. -m参数
wanghui@Mokalas-MacBook-Pro ~ $ jps -m
44761 JPSMain
45051 Jps -m
输出进程id、主类信息和传递给主类的参数
2.4. -l参数
wanghui@Mokalas-MacBook-Pro ~ $ jps -l
45236 sun.tools.jps.Jps
44761 JPSMain
wanghui@Mokalas-MacBook-Pro ~ $
输出进程id和主类的全限定名,如果执行的jar,则输出jar的全路径
2.5. -v参数
wanghui@Mokalas-MacBook-Pro ~ $ jps -v
45366 Jps -Dapplication.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home -Xms8m
44761 JPSMain
wanghui@Mokalas-MacBook-Pro ~ $
输出启动时JVM进程的虚拟机运行参数
2.6. -V参数
wanghui@Mokalas-MacBook-Pro ~ $ jps -V
44761 JPSMain
45963 Jps
输出通过标识文件(.hotspotrc文件或-XX:Flags=参数指定的文件)传递給JVM的参数
3. 最佳实践
3.1. 常用手法
在日常运行时,带上-lvm
参数可显示进程的详细信息。
wanghui@Mokalas-MacBook-Pro ~ $ jps -lvm
44761 JPSMain
45614 sun.tools.jps.Jps -lvm -Dapplication.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home -Xms8m