javaSE_获取java虚拟机信息

我只是一个虾纸丫 提交于 2019-12-05 19:45:05

  获取java虚拟机信息

程序是在java虚拟机中运行的,动态获取虚拟机中的运行时环境:

如:

//Java 虚拟机中的内存总量,以字节为单位  

int total = (int)Runtime.getRuntime().totalMemory()/1024/1024;

System.out.println("内存总量 :" + total + "mb");  

int free = (int)Runtime.getRuntime().freeMemory()/1024/1024;

System.out.println("空闲内存量 : " + free + "mb");  

int max = (int) (Runtime.getRuntime().maxMemory() /1024 / 1024);

System.out.println("最大内存量 : "  + max + "mb");  

输出:

内存总量 120mb

空闲内存量 118mb

最大内存量 1790mb

 

其他信息,如:

public static void main(String[] args) {

//==========================Memory=========================

System.out.println("==========================Memory=======================");

MemoryMXBean memoryMBean = ManagementFactory.getMemoryMXBean();   

    MemoryUsage usage = memoryMBean.getHeapMemoryUsage();   

    System.out.println("初始化 Heap: " + (usage.getInit()/1024/1024) + "mb");   

    System.out.println("最大Heap: " + (usage.getMax()/1024/1024) + "mb");   

    System.out.println("已经使用Heap: " + (usage.getUsed()/1024/1024) + "mb");   

    System.out.println("Heap Memory Usage: " + memoryMBean.getHeapMemoryUsage());   

    System.out.println("Non-Heap Memory Usage: " + memoryMBean.getNonHeapMemoryUsage());   

    //==========================Runtime=========================

    System.out.println("==========================Runtime=======================");

    RuntimeMXBean runtimeMBean = ManagementFactory.getRuntimeMXBean();

System.out.println("JVM name : " + runtimeMBean.getVmName());

System.out.println("lib path : " + runtimeMBean.getLibraryPath());

System.out.println("class path : " + runtimeMBean.getClassPath());

System.out.println("getVmVersion() " + runtimeMBean.getVmVersion());  

//java options

List<String> argList = runtimeMBean.getInputArguments();

for(String arg : argList){

System.out.println("arg : " + arg);

}

//==========================OperatingSystem=========================

System.out.println("===================OperatingSystem====================");

OperatingSystemMXBean osMBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();  

//获取操作系统相关信息  

System.out.println("getName() "+ osMBean.getName());

System.out.println("getVersion() " + osMBean.getVersion());

System.out.println("getArch() "+osMBean.getArch());  

    System.out.println("getAvailableProcessors() " + osMBean.getAvailableProcessors());  

    //==========================Thread=========================

    System.out.println("==========================Thread=========================");

    //获取各个线程的各种状态,CPU 占用情况,以及整个系统中的线程状况  

    ThreadMXBean threadMBean=(ThreadMXBean)ManagementFactory.getThreadMXBean();  

    System.out.println("getThreadCount() " + threadMBean.getThreadCount());  

    System.out.println("getPeakThreadCount() " + threadMBean.getPeakThreadCount());  

    System.out.println("getCurrentThreadCpuTime() " + threadMBean.getCurrentThreadCpuTime());  

    System.out.println("getDaemonThreadCount() " + threadMBean.getDaemonThreadCount());  

    System.out.println("getCurrentThreadUserTime() "+ threadMBean.getCurrentThreadUserTime());  

    //==========================Compilation=========================

    System.out.println("========================Compilation======================");

    CompilationMXBean compilMBean=(CompilationMXBean)ManagementFactory.getCompilationMXBean();   

    System.out.println("getName() " + compilMBean.getName());  

    System.out.println("getTotalCompilationTime() " + compilMBean.getTotalCompilationTime());  

    //==========================MemoryPool=========================

    System.out.println("=======================MemoryPool========================");

    //获取多个内存池的使用情况  

    List<MemoryPoolMXBean> mpMBeanList= ManagementFactory.getMemoryPoolMXBeans();  

    for(MemoryPoolMXBean mpMBean : mpMBeanList){  

        System.out.println("getUsage() " + mpMBean.getUsage());  

        System.out.println("getMemoryManagerNames() "+ mpMBean.getMemoryManagerNames().toString());  

    }

    //==========================GarbageCollector=========================

    System.out.println("====================GarbageCollector=====================");

    //获取GC的次数以及花费时间之类的信息  

    List<GarbageCollectorMXBean> gcMBeanList=ManagementFactory.getGarbageCollectorMXBeans();  

    for(GarbageCollectorMXBean gcMBean : gcMBeanList){  

        System.out.println("getName() " + gcMBean.getName());  

        System.out.println("getMemoryPoolNames() "+ gcMBean.getMemoryPoolNames());  

    }

    //==========================Other=========================

    System.out.println("========================Other=======================");

    //Java 虚拟机中的内存总量,以字节为单位  

    int total = (int)Runtime.getRuntime().totalMemory()/1024/1024;

    System.out.println("内存总量 :" + total + "mb");  

    int free = (int)Runtime.getRuntime().freeMemory()/1024/1024;

    System.out.println("空闲内存量 : " + free + "mb");  

    int max = (int) (Runtime.getRuntime().maxMemory() /1024 / 1024);

    System.out.println("最大内存量 : "  + max + "mb");  

}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!