Skip to content

Instantly share code, notes, and snippets.

@JaredTan95
Created March 8, 2023 06:06
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JaredTan95/8711878369b9b12c772dd783a21c621d to your computer and use it in GitHub Desktop.
Save JaredTan95/8711878369b9b12c772dd783a21c621d to your computer and use it in GitHub Desktop.
MXBean demo
package org.example.jmx;
import java.lang.management.CompilationMXBean;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryManagerMXBean;
import java.lang.management.MemoryUsage;
import java.lang.management.OperatingSystemMXBean;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
printOSInfo();
System.out.println("================");
printMemoryManagerInfo();
System.out.println("================");
printGCInfo();
}
//通过 OperatingSystemMXBean 获取 OS 信息
public static void printOSInfo() {
OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
String osName = operatingSystemMXBean.getName();
String osVersion = operatingSystemMXBean.getVersion();
int processors = operatingSystemMXBean.getAvailableProcessors();
System.out.println(String.format("OS:%s,Version:%s,CPU:%d 个", osName, osVersion, processors));
CompilationMXBean compilationMXBean = ManagementFactory.getCompilationMXBean();
String compilationMXBeanName = compilationMXBean.getName();
System.out.println("编译系统:" + compilationMXBeanName);
MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean();
MemoryUsage heapMemoryUsage = memoryMXBean.getHeapMemoryUsage();
long max = heapMemoryUsage.getMax();
long used = heapMemoryUsage.getUsed();
System.out.println(String.format("使用内存:%dMB/%dMB", used / 1024 / 1024, max / 1024 / 1024));
List<GarbageCollectorMXBean> gcMXBeans = ManagementFactory.getGarbageCollectorMXBeans();
String gcNames = gcMXBeans.stream()
.map(MemoryManagerMXBean::getName)
.collect(Collectors.joining(","));
System.out.println("垃圾收集器:" + gcNames);
}
// 通过 MemoryManagerMXBean 获取 JVM 内存管理器信息
public static void printMemoryManagerInfo() {
List<MemoryManagerMXBean> managers = ManagementFactory.getMemoryManagerMXBeans();
if (managers != null && !managers.isEmpty()) {
for (MemoryManagerMXBean manager : managers) {
System.out.println("vm内存管理器:名称=" + manager.getName() + ",管理的内存区="
+ Arrays.deepToString(
manager.getMemoryPoolNames()) + ",ObjectName=" + manager.getObjectName());
}
}
}
//通过 GarbageCollectorMXBean 获取 JVM GC 信息
public static void printGCInfo() {
try {
List<GarbageCollectorMXBean> gcMxBeans = ManagementFactory.getGarbageCollectorMXBeans();
for (GarbageCollectorMXBean gcMxBean : gcMxBeans) {
System.out.println(gcMxBean.getName());
System.out.println(gcMxBean.getObjectName());
}
} catch (RuntimeException re) {
throw re;
} catch (Exception exp) {
throw new RuntimeException(exp);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment