簡介
最常用的一個。
與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命令執行結果相同。