[Java] 管理和监视java虚拟机 MXBean →→→→→进入此内容的聊天室

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

回复 "管理和监视java虚拟机 MXBean"

这儿你可以回复上面这条便签

captcha