1. /** 
  2.  * 用户可以通过MXBean可以管理和监视虚拟机。 
  3.  */ 
  4. public class JDKMBean { 
  5.   
  6.     /** 
  7.      * MemoryMXBean是Java 虚拟机的内存系统的管理接口 Java 虚拟机具有此接口的实现类的单一实例 
  8.      */ 
  9.     public static void printMemoryMXBean() { 
  10.         // 获得单一实例 
  11.         MemoryMXBean instance = ManagementFactory.getMemoryMXBean(); 
  12.         System.out.printf("%n---%s---%n", instance.getClass().getName()); 
  13.         // 返回用于对象分配的堆的当前内存使用量 
  14.         System.out.printf("%s: %s%n""HeapMemoryUsage"
  15.                 instance.getHeapMemoryUsage()); 
  16.         // 返回 Java 虚拟机使用的非堆内存的当前使用量 
  17.         System.out.printf("%s: %s%n""getNonHeapMemoryUsage"
  18.                 instance.getNonHeapMemoryUsage()); 
  19.         // 运行垃圾回收器 
  20.         instance.gc(); 
  21.     } 
  22.   
  23.     /** 
  24.      * ClassLoadingMXBean是Java 虚拟机的类加载系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例 
  25.      */ 
  26.     public static void printClassLoadingMXBean() { 
  27.         // 获得单一实例 
  28.         ClassLoadingMXBean instance = ManagementFactory.getClassLoadingMXBean(); 
  29.         System.out.printf("%n---%s---%n", instance.getClass().getName()); 
  30.         // 返回当前加载到 Java 虚拟机中的类的数量 
  31.         System.out.printf("%s: %s%n""LoadedClassCount"
  32.                 instance.getLoadedClassCount()); 
  33.         // 返回自 Java 虚拟机开始执行到目前已经加载的类的总数 
  34.         System.out.printf("%s: %s%n""TotalLoadedClassCount"
  35.                 instance.getTotalLoadedClassCount()); 
  36.         // 返回自 Java 虚拟机开始执行到目前已经卸载的类的总数 
  37.         System.out.printf("%s: %s%n""UnloadedClassCount"
  38.                 instance.getUnloadedClassCount()); 
  39.     } 
  40.   
  41.     /** 
  42.      * ThreadMXBean是Java 虚拟机线程系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例 
  43.      */ 
  44.     public static void printThreadMXBean() { 
  45.         // 获得单一实例 
  46.         ThreadMXBean instance = ManagementFactory.getThreadMXBean(); 
  47.         System.out.printf("%n---%s---%n", instance.getClass().getName()); 
  48.         // 返回活动线程的当前数目,包括守护线程和非守护线程。 
  49.         System.out.printf("%s: %s%n""ThreadCount", instance.getThreadCount()); 
  50.         // 返回活动线程 ID 
  51.         System.out.printf("%s: %n""Thread IDs"); 
  52.         long[] ids = instance.getAllThreadIds(); 
  53.         for (long id : ids) { 
  54.             System.out.printf("%s;  ", id); 
  55.         } 
  56.         System.out.printf("%n"); 
  57.         // 返回活动守护线程的当前数目 
  58.         System.out.printf("%s: %s%n""DaemonThreadCount"
  59.                 instance.getDaemonThreadCount()); 
  60.         // 返回自从 Java 虚拟机启动或峰值重置以来峰值活动线程计数 
  61.         System.out.printf("%s: %s%n""PeakThreadCount"
  62.                 instance.getPeakThreadCount()); 
  63.         // 返回当前线程的总 CPU 时间 
  64.         System.out.printf("%s: %s%n""CurrentThreadCpuTime"
  65.                 instance.getCurrentThreadCpuTime()); 
  66.         // 返回当前线程在用户模式中执行的 CPU 时间 
  67.         System.out.printf("%s: %s%n""CurrentThreadUserTime"
  68.                 instance.getCurrentThreadUserTime()); 
  69.     } 
  70.   
  71.     /** 
  72.      * RuntimeMXBean是Java 虚拟机的运行时系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例 
  73.      */ 
  74.     public static void printRuntimeMXBean() { 
  75.         // 获得单一实例 
  76.         RuntimeMXBean instance = ManagementFactory.getRuntimeMXBean(); 
  77.         System.out.printf("%n---%s---%n", instance.getClass().getName()); 
  78.         // 返回由引导类加载器用于搜索类文件的引导类路径 
  79.         System.out.printf("%s: %s%n""BootClassPath"
  80.                 instance.getBootClassPath()); 
  81.         // 返回系统类加载器用于搜索类文件的 Java 类路径 
  82.         System.out.printf("%s: %s%n""ClassPath", instance.getClassPath()); 
  83.         // 返回传递给 Java 虚拟机的输入变量,其中不包括传递给 main 方法的变量 
  84.         System.out.printf("%s%n""InputArguments"); 
  85.         List<String> args = instance.getInputArguments(); 
  86.         for (String arg : args) { 
  87.             System.out.printf("%s;  ", arg); 
  88.         } 
  89.         // 返回 Java 库路径 
  90.         System.out.printf("%s: %s%n""LibraryPath", instance.getLibraryPath()); 
  91.         // 返回正在运行的 Java 虚拟机实现的管理接口的规范版本 
  92.         System.out.printf("%s: %s%n""ManagementSpecVersion"
  93.                 instance.getManagementSpecVersion()); 
  94.         // 返回表示正在运行的 Java 虚拟机的名称 
  95.         System.out.printf("%s: %s%n""Name", instance.getName()); 
  96.   
  97.         // 返回 Java 虚拟机规范名称 
  98.         System.out.printf("%s: %s%n""SpecName", instance.getSpecName()); 
  99.         // 返回 Java 虚拟机规范供应商 
  100.         System.out.printf("%s: %s%n""SpecVendor", instance.getSpecVendor()); 
  101.         // 返回 Java 虚拟机规范版本 
  102.         System.out.printf("%s: %s%n""SpecVersion", instance.getSpecVersion()); 
  103.   
  104.         // 返回 Java 虚拟机实现名称 
  105.         System.out.printf("%s: %s%n""VmName", instance.getVmName()); 
  106.         // 返回 Java 虚拟机实现供应商 
  107.         System.out.printf("%s: %s%n""VmVendor", instance.getVmVendor()); 
  108.         // 返回 Java 虚拟机实现版本 
  109.         System.out.printf("%s: %s%n""VmVersion", instance.getVmVersion()); 
  110.   
  111.         // 返回 Java 虚拟机的启动时间 
  112.         System.out.printf("%s: %s%n""StartTime", instance.getStartTime()); 
  113.         // 返回 Java 虚拟机的正常运行时间 
  114.         System.out.printf("%s: %s%n""Uptime", instance.getUptime()); 
  115.     } 
  116.   
  117.     /** 
  118.      * OperatingSystemMXBean是操作系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例 
  119.      */ 
  120.     public static void printOperatingSystemMXBean() { 
  121.         // 获得单一实例 
  122.         OperatingSystemMXBean instance = ManagementFactory 
  123.                 .getOperatingSystemMXBean(); 
  124.         System.out.printf("%n---%s---%n", instance.getClass().getName()); 
  125.         // 返回操作系统的架构 
  126.         System.out.printf("%s: %s%n""Arch", instance.getArch()); 
  127.         // 返回 Java 虚拟机可以使用的处理器数目 
  128.         System.out.printf("%s: %s%n""AvailableProcessors"
  129.                 instance.getAvailableProcessors()); 
  130.         // 返回操作系统名称 
  131.         System.out.printf("%s: %s%n""Name", instance.getName()); 
  132.         // 返回操作系统版本 
  133.         System.out.printf("%s: %s%n""Version", instance.getVersion()); 
  134.     } 
  135.   
  136.     /** 
  137.      * CompilationMXBean是Java 虚拟机的编译系统的管理接口 Java 虚拟机具有此接口的实现类的单个实例 
  138.      */ 
  139.     public static void printCompilationMXBean() { 
  140.         // 获得单一实例 
  141.         CompilationMXBean instance = ManagementFactory.getCompilationMXBean(); 
  142.         System.out.printf("%n---%s---%n", instance.getClass().getName()); 
  143.         // 返回即时 (JIT) 编译器的名称 
  144.         System.out.printf("%s: %s%n""Name", instance.getName()); 
  145.         // 返回在编译上花费的累积耗费时间的近似值 
  146.         System.out.printf("%s: %s%n""TotalCompilationTime"
  147.                 instance.getTotalCompilationTime()); 
  148.     } 
  149.   
  150.     /** 
  151.      * GarbageCollectorMXBean是Java 虚拟机的垃圾回收的管理接口 Java 虚拟机可能具有此接口的实现类的一个或多个实例 
  152.      */ 
  153.     public static void printGarbageCollectorMXBean() { 
  154.         // 获得所有实例 
  155.         List<GarbageCollectorMXBean> instances = ManagementFactory 
  156.                 .getGarbageCollectorMXBeans(); 
  157.         System.out.printf("%n---%s---%n"
  158.                 GarbageCollectorMXBean.class.getName()); 
  159.         // 遍历每个实例 
  160.         for (GarbageCollectorMXBean instance : instances) { 
  161.             // 返回垃圾收集器的名字 
  162.             System.out.printf("***%s: %s***%n""Name", instance.getName()); 
  163.             // 返回已发生的回收的总次数 
  164.             System.out.printf("%s: %s%n""CollectionCount"
  165.                     instance.getCollectionCount()); 
  166.             // 返回近似的累积回收时间 
  167.             System.out.printf("%s: %s%n""CollectionTime"
  168.                     instance.getCollectionTime()); 
  169.         } 
  170.     } 

转自云代码