我需要以编程方式重新创建 jps 工具的功能。我需要找出所有正在运行的 Java 进程及其 ID,以便我可以附加到该进程(类似于 JConsole 的做法)。
我认为 VirtualMachine API 会有帮助,但当我运行以下命令时没有得到预期结果
public class ProcessList {
public static void main(String[] args){
List<VirtualMachineDescriptor> vms = VirtualMachine.list();
for(VirtualMachineDescriptor vm : vms){
System.out.println (vm.id());
}
}
}
当我运行上面的代码时,它只返回一个 ID,但是当我在同一台计算机上运行 jps 时,我会看到其他几个进程。
jps
使用内部类 -MonitoredHost http://openjdk.java.net/groups/serviceability/jvmstat/sun/jvmstat/monitor/MonitoredHost.htmlOracle/Sun JRE 的。这activeVMs()
方法用于获取主机上所有活动虚拟机的列表。你可以参考一下源码sun.tools.jps.Jps
OpenJDK 的类,了解如何jps
工具在幕后工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)