简介
最常用的一个。
与Linux中的查看Java进程命令功能相同:
ps -ef | grep java
jps与这个命令的区别在于,jps仅仅过滤出Java本身的进程以及运行的引导类,就是引导main方法所在的类。
使用
- -q 仅输出VM标识符,不包括class name,jar name,arguments in main method
- -m 输出main method的参数
- -l 输出完全的包名,应用主类名,jar的完全路径名
- -v 输出jvm参数
- -V 输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件
- -Joption 传递参数到vm,例如:-J-Xms48m
举个栗子🌰
写一个Java类来模拟实现jps:
1 package service.test; 2 3 import com.sun.tools.attach.VirtualMachine; 4 import com.sun.tools.attach.VirtualMachineDescriptor; 5 6 import java.util.List; 7 8 /** 9 * Created by zhengbin on 16/8/30. 10 */ 11 public class JPSTest { 12 public static void main(String[] args) throws InterruptedException { 13 List<VirtualMachineDescriptor> machineDescriptors = VirtualMachine.list(); 14 for (VirtualMachineDescriptor machineDescriptor : machineDescriptors) { 15 System.out.println(machineDescriptor.id() + "\t" + machineDescriptor.displayName()); 16 } 17 Thread.sleep(10 * 1000); 18 } 19 }
运行结果:
同时执行jps命令:
执行结果与jps -m命令执行结果相同。