package org.kodejava.lang.management;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
public class PeakThreadCount {
public static void main(String[] args) {
// Get the managed bean for the thread system of the Java
// virtual machine.
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
// Get the peak live thread count since the Java virtual
// machine started or peak was reset.
int peakThreadCount = bean.getPeakThreadCount();
System.out.println("Peak Thread Count = " + peakThreadCount);
}
}
Category: Management
How do I get current number of live threads?
package org.kodejava.lang.management;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadMXBean;
public class ThreadCount {
public static void main(String[] args) {
// Get the managed bean for the thread system of the Java
// virtual machine.
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
// Get the current number of live threads including both
// daemon and non-daemon threads.
int threadCount = bean.getThreadCount();
System.out.println("Thread Count = " + threadCount);
}
}
How do I get the Java classpath?
The RuntimeMXBean.getClassPath()
returns the Java class path that is used by the system class loader to search for class files. This method is equivalent to System.getProperty("java.class.path")
.
Multiple paths in the Java class path are separated by the path separator character of the platform of the Java virtual machine being monitored.
package org.kodejava.lang.management;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
public class GetClassPath {
public static void main(String[] args) {
RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
String classPath = bean.getClassPath();
System.out.println("ClassPath = " + classPath);
}
}
How do I get system properties information?
package org.kodejava.lang.management;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.Map;
import java.util.Set;
public class GetSystemProperties {
public static void main(String[] args) {
RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
// Returns a map of names and values of all system
// properties. This method calls System.getProperties()
// to get all system properties. Properties whose
// name or value is not a String are omitted.
Map<String, String> systemProperties = bean.getSystemProperties();
Set<String> keys = systemProperties.keySet();
for (String key : keys) {
String value = systemProperties.get(key);
System.out.printf("Property[%s] = %s%n", key, value);
}
}
}
Some properties produced by the code snippet above are:
Property[java.specification.version] = 17
Property[sun.cpu.isalist] = amd64
Property[sun.jnu.encoding] = Cp1252
Property[java.vm.vendor] = Oracle Corporation
Property[sun.arch.data.model] = 64
Property[user.variant] =
Property[java.vendor.url] = https://java.oracle.com/
...
...
Property[java.vm.info] = mixed mode, sharing.
Property[java.vendor] = Oracle Corporation.
Property[java.vm.version] = 17+35-LTS-2724.
Property[sun.io.unicode.encoding] = UnicodeLittle.
Property[java.class.version] = 61.0.
How do I get the start time of a JVM?
package org.kodejava.lang.management;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.Date;
public class GetStartTime {
public static void main(String[] args) {
RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
// Returns the start time of the Java virtual machine in
// milliseconds. This method returns the approximate time
// when the Java virtual machine started.
long startTime = bean.getStartTime();
Date startDate = new Date(startTime);
System.out.println("Start Time = " + startTime);
System.out.println("Start Date = " + startDate);
}
}
The result of the code snippet above:
Start Time = 1634391703196
Start Date = Sat Oct 16 21:41:43 CST 2021
How do I get the uptime of a JVM?
The following code snippet demonstrates how to get the time for how long has the JVM been running.
package org.kodejava.lang.management;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
public class GetUptime {
public static void main(String[] args) {
RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
// Returns the uptime of the Java virtual machine in
// milliseconds.
long uptime = bean.getUptime();
System.out.printf("Uptime = %d (ms).", uptime);
}
}
The output of the code snippet above:
Uptime = 125 (ms).
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