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 get number of each day for a certain month in Java? - September 8, 2024
- How do I get operating system process information using ProcessHandle? - July 22, 2024
- How do I sum a BigDecimal property of a list of objects using Java Stream API? - July 22, 2024
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.