监视java虚拟机状态


部分源码:

/**
 * 用户可以通过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());
        }
    }

转自云代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT开发者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值