ManagementFactory-JAVA获取系统相关的信息

package jvmpackage;

import javax.management.MBeanServer;
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryUsage;
import java.lang.management.ThreadInfo;
import java.util.List;

public class Test1 {
          
   

    public static void main( String[] args ) {
          
   
        testManagementFactory();
    }

    private static void testManagementFactory() {
          
   
//      1获取JVM输入参数
        List<String> list=ManagementFactory.getRuntimeMXBean().getInputArguments();
        System.out.println(list);
//      2.获取当前JVM进程的PID
        String name = ManagementFactory.getRuntimeMXBean().getName();
        String pid = name.split("@")[0];
        System.out.println("name: "+ name);
        System.out.println("pid: "+ pid);
//      3.获取当前系统的负载
        double load = ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage();
        System.out.println("load: "+ load);
//      4.获取内存相关的
        MemoryUsage mu = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();//堆内存
        System.out.println("max memory: "+ mu.getMax());
        System.out.println("memory use: "+ mu.getUsed());
        ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage();//堆外内存
//      5.获取堆栈信息相当于jstack
        ThreadInfo[] infos = ManagementFactory.getThreadMXBean().dumpAllThreads(false, false);
        System.out.println("------jstack信息-----");
        for (ThreadInfo info :infos){
          
   
            System.out.println(info);
        }
        System.out.println("------jstack信息--end---");
//      ThreadInfo 里有线程的信息

//      进行垃圾回收监控
//      MavenSpringApp.main(new String[]{"-gcutil", "-h5",pid,"1s"});

//      如何获取HotSpotDiagnosticMXBean   ?
        MBeanServer server = ManagementFactory.getPlatformMBeanServer();
//      HotSpotDiagnosticMXBean   hotspotDiagnosticMXBean = new PlatformMXBeanProxy(server, "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class);

        //获取young GC 和full GC 次数
        List<GarbageCollectorMXBean> list1=ManagementFactory.getGarbageCollectorMXBeans();
        for(GarbageCollectorMXBean e:list1){
          
   
            System.out.println(String.format("name=%s,count=%s,time=%s",e.getName(),e.getCollectionCount(),e.getCollectionTime()));
        }
    }
}

Reference

https://blog..net/lsm135/article/details/78818128

经验分享 程序员 微信小程序 职场和发展