How do I get process ID of a Java application?

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
Wayan

3 Comments

  1. 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?

    Reply

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.