获取使用中的PID Java Mac
问题描述:
这些方法依赖于以下导入。这些都是旧的,从阅读中不应该使用它。这只适用于Java 6无论如何,我想这个更新到Java 8.获取使用中的PID Java Mac
有谁知道如何获得在OS X上的Java 8的PID?
import sun.jvmstat.monitor.*;
import java.lang.management.*;
public String getUsageDescription()
{
System.out.println("** Get Usage Description");
int pid = 0;
RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean();
pid = Integer.parseInt(rt.getName().substring(0,rt.getName().indexOf("@")));
System.out.println("Run Time PID = "+pid);
return new String(getDeviceName()+" "+Integer.toString(pid));
}
public static boolean isPIDInUse(int pid)
{
try{
String s = null;
int java_pid;
MonitoredHost host = MonitoredHost.getMonitoredHost(s);
for(Object activeVmPID : host.activeVms())
{
java_pid = (Integer)activeVmPID;
System.out.println("****************PID = "+java_pid);
if(java_pid == pid){
System.out.println("In Use\n");
return true;
}
}
}
catch(Exception e)
{
System.out.println("Exception: "+e.getMessage());
}
return false;
}
解决方案:
public static boolean isPIDInUse(int pid) {
try {
String s = null;
int java_pid;
RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean();
java_pid = Integer.parseInt(rt.getName().substring(0, rt.getName().indexOf("@")));
if (java_pid == pid) {
System.out.println("In Use\n");
return true;
}
} catch (Exception e) {
System.out.println("Exception: " + e.getMessage());
}
return false;
}
答
使用第一种方法。它在Java 8中工作,不使用内部API。
请注意,您不需要使用new String(String)
谢谢!我更新了原始帖子以显示解决方案。 – PartialData
由于PID不会改变,我会把它放在一个常量中,所以它只计算一次。 –