The code below show you how to get the process ID of a Java application. We can use the ManagementFactory.getRuntimeMXBean().getName()
to get the process ID. In Windows the method return a string in the form of [PID]@[MACHINE_NAME]
.
Since JDK 10, we can use ManagementFactory.getRuntimeMXBean().getPid()
method to get the process ID. This method returns the process ID representing the running Java virtual machine.
package org.kodejava.lang.management;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
public class GetProcessID {
public static void main(String[] args) {
RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
// Get name representing the running Java virtual machine.
// It returns something like 35656@Krakatau. The value before
// the @ symbol is the PID.
String jvmName = bean.getName();
System.out.println("Name = " + jvmName);
// Extract the PID by splitting the string returned by the
// bean.getName() method.
long pid = Long.parseLong(jvmName.split("@")[0]);
System.out.println("PID = " + pid);
// Get the process ID representing the running Java virtual machine.
// Since JDK 10.
pid = ManagementFactory.getRuntimeMXBean().getPid();
System.out.println("PID = " + pid);
}
}
Here is the result of the code above:
Name = 35656@Krakatau
PID = 35656
PID = 35656
Latest posts by Wayan (see all)
- How do I create a string of repeated characters? - September 1, 2023
- How do I convert datetime string with optional part to a date object? - August 28, 2023
- How do I split large excel file into multiple smaller files? - April 15, 2023
I just found that the process with PID=8564 uses 25% of CPU while there was a blank screen saver on the desktop PC (win7, i5-3570K) while idle. Is the process PID generally unique, and what does that process 8564 (svchost.exe) do while PC is idle and blank screen saver is on?
What about
ManagementFactory.getRuntimeMXBean().getPid()
?Hi Harry, since JDK 10, this should be the better way to get the process ID.