8073132: Eliminate ProcessTools.getProcessId dependency on sun.management.VMManagement

Reviewed-by: jbachorik, dfuchs, mchung
This commit is contained in:
Katja Kantserova 2015-02-13 13:17:13 +01:00
parent 0d2c28e3b8
commit 3d3f6553c0

View file

@ -33,8 +33,6 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import sun.management.VMManagement;
public final class ProcessTools {
private ProcessTools() {
@ -90,19 +88,8 @@ public final class ProcessTools {
* @return Process id
*/
public static int getProcessId() throws Exception {
// Get the current process id using a reflection hack
RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
Field jvm = runtime.getClass().getDeclaredField("jvm");
jvm.setAccessible(true);
VMManagement mgmt = (sun.management.VMManagement) jvm.get(runtime);
Method pid_method = mgmt.getClass().getDeclaredMethod("getProcessId");
pid_method.setAccessible(true);
int pid = (Integer) pid_method.invoke(mgmt);
int pid = Integer.parseInt(runtime.getName().split("@")[0]);
return pid;
}