- /**
- * 用户可以通过MXBean可以管理和监视虚拟机。
- */
- public class JDKMBean {
- /**
- * MemoryMXBean是Java 虚拟机的内存系统的管理接口 Java 虚拟机具有此接口的实现类的单一实例
- */
- public static void printMemoryMXBean() {
- // 获得单一实例
- MemoryMXBean instance = ManagementFactory.getMemoryMXBean();
- System.out.printf("%n---%s---%n", instance.getClass().getName());
- // 返回用于对象分配的堆的当前内存使用量
- System.out.printf("%s: %s%n", "HeapMemoryUsage",
- instance.getHeapMemoryUsage());
- // 返回 Java 虚拟机使用的非堆内存的当前使用量
- System.out.printf("%s: %s%n", "getNonHeapMemoryUsage",
- instance.getNonHeapMemoryUsage());
- // 运行垃圾回收器
- instance.gc();
- }
- /**
- * ClassLoadingMXBean是Java 虚拟机的类加载系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例
- */
- public static void printClassLoadingMXBean() {
- // 获得单一实例
- ClassLoadingMXBean instance = ManagementFactory.getClassLoadingMXBean();
- System.out.printf("%n---%s---%n", instance.getClass().getName());
- // 返回当前加载到 Java 虚拟机中的类的数量
- System.out.printf("%s: %s%n", "LoadedClassCount",
- instance.getLoadedClassCount());
- // 返回自 Java 虚拟机开始执行到目前已经加载的类的总数
- System.out.printf("%s: %s%n", "TotalLoadedClassCount",
- instance.getTotalLoadedClassCount());
- // 返回自 Java 虚拟机开始执行到目前已经卸载的类的总数
- System.out.printf("%s: %s%n", "UnloadedClassCount",
- instance.getUnloadedClassCount());
- }
- /**
- * ThreadMXBean是Java 虚拟机线程系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例
- */
- public static void printThreadMXBean() {
- // 获得单一实例
- ThreadMXBean instance = ManagementFactory.getThreadMXBean();
- System.out.printf("%n---%s---%n", instance.getClass().getName());
- // 返回活动线程的当前数目,包括守护线程和非守护线程。
- System.out.printf("%s: %s%n", "ThreadCount", instance.getThreadCount());
- // 返回活动线程 ID
- System.out.printf("%s: %n", "Thread IDs");
- long[] ids = instance.getAllThreadIds();
- for (long id : ids) {
- System.out.printf("%s; ", id);
- }
- System.out.printf("%n");
- // 返回活动守护线程的当前数目
- System.out.printf("%s: %s%n", "DaemonThreadCount",
- instance.getDaemonThreadCount());
- // 返回自从 Java 虚拟机启动或峰值重置以来峰值活动线程计数
- System.out.printf("%s: %s%n", "PeakThreadCount",
- instance.getPeakThreadCount());
- // 返回当前线程的总 CPU 时间
- System.out.printf("%s: %s%n", "CurrentThreadCpuTime",
- instance.getCurrentThreadCpuTime());
- // 返回当前线程在用户模式中执行的 CPU 时间
- System.out.printf("%s: %s%n", "CurrentThreadUserTime",
- instance.getCurrentThreadUserTime());
- }
- /**
- * RuntimeMXBean是Java 虚拟机的运行时系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例
- */
- public static void printRuntimeMXBean() {
- // 获得单一实例
- RuntimeMXBean instance = ManagementFactory.getRuntimeMXBean();
- System.out.printf("%n---%s---%n", instance.getClass().getName());
- // 返回由引导类加载器用于搜索类文件的引导类路径
- System.out.printf("%s: %s%n", "BootClassPath",
- instance.getBootClassPath());
- // 返回系统类加载器用于搜索类文件的 Java 类路径
- System.out.printf("%s: %s%n", "ClassPath", instance.getClassPath());
- // 返回传递给 Java 虚拟机的输入变量,其中不包括传递给 main 方法的变量
- System.out.printf("%s%n", "InputArguments");
- List<String> args = instance.getInputArguments();
- for (String arg : args) {
- System.out.printf("%s; ", arg);
- }
- // 返回 Java 库路径
- System.out.printf("%s: %s%n", "LibraryPath", instance.getLibraryPath());
- // 返回正在运行的 Java 虚拟机实现的管理接口的规范版本
- System.out.printf("%s: %s%n", "ManagementSpecVersion",
- instance.getManagementSpecVersion());
- // 返回表示正在运行的 Java 虚拟机的名称
- System.out.printf("%s: %s%n", "Name", instance.getName());
- // 返回 Java 虚拟机规范名称
- System.out.printf("%s: %s%n", "SpecName", instance.getSpecName());
- // 返回 Java 虚拟机规范供应商
- System.out.printf("%s: %s%n", "SpecVendor", instance.getSpecVendor());
- // 返回 Java 虚拟机规范版本
- System.out.printf("%s: %s%n", "SpecVersion", instance.getSpecVersion());
- // 返回 Java 虚拟机实现名称
- System.out.printf("%s: %s%n", "VmName", instance.getVmName());
- // 返回 Java 虚拟机实现供应商
- System.out.printf("%s: %s%n", "VmVendor", instance.getVmVendor());
- // 返回 Java 虚拟机实现版本
- System.out.printf("%s: %s%n", "VmVersion", instance.getVmVersion());
- // 返回 Java 虚拟机的启动时间
- System.out.printf("%s: %s%n", "StartTime", instance.getStartTime());
- // 返回 Java 虚拟机的正常运行时间
- System.out.printf("%s: %s%n", "Uptime", instance.getUptime());
- }
- /**
- * OperatingSystemMXBean是操作系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例
- */
- public static void printOperatingSystemMXBean() {
- // 获得单一实例
- OperatingSystemMXBean instance = ManagementFactory
- .getOperatingSystemMXBean();
- System.out.printf("%n---%s---%n", instance.getClass().getName());
- // 返回操作系统的架构
- System.out.printf("%s: %s%n", "Arch", instance.getArch());
- // 返回 Java 虚拟机可以使用的处理器数目
- System.out.printf("%s: %s%n", "AvailableProcessors",
- instance.getAvailableProcessors());
- // 返回操作系统名称
- System.out.printf("%s: %s%n", "Name", instance.getName());
- // 返回操作系统版本
- System.out.printf("%s: %s%n", "Version", instance.getVersion());
- }
- /**
- * CompilationMXBean是Java 虚拟机的编译系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例
- */
- public static void printCompilationMXBean() {
- // 获得单一实例
- CompilationMXBean instance = ManagementFactory.getCompilationMXBean();
- System.out.printf("%n---%s---%n", instance.getClass().getName());
- // 返回即时 (JIT) 编译器的名称
- System.out.printf("%s: %s%n", "Name", instance.getName());
- // 返回在编译上花费的累积耗费时间的近似值
- System.out.printf("%s: %s%n", "TotalCompilationTime",
- instance.getTotalCompilationTime());
- }
- /**
- * GarbageCollectorMXBean是Java 虚拟机的垃圾回收的管理接口 Java 虚拟机可能具有此接口的实现类的一个或多个实例
- */
- public static void printGarbageCollectorMXBean() {
- // 获得所有实例
- List<GarbageCollectorMXBean> instances = ManagementFactory
- .getGarbageCollectorMXBeans();
- System.out.printf("%n---%s---%n",
- GarbageCollectorMXBean.class.getName());
- // 遍历每个实例
- for (GarbageCollectorMXBean instance : instances) {
- // 返回垃圾收集器的名字
- System.out.printf("***%s: %s***%n", "Name", instance.getName());
- // 返回已发生的回收的总次数
- System.out.printf("%s: %s%n", "CollectionCount",
- instance.getCollectionCount());
- // 返回近似的累积回收时间
- System.out.printf("%s: %s%n", "CollectionTime",
- instance.getCollectionTime());
- }
- }
转自云代码