实时取得虚拟机类信息、内存信息、MXBean的使用方法

实时取得虚拟机类信息、内存信息、MXBean的使用方法
  1. import java.lang.management.ClassLoadingMXBean;
  2. import java.lang.management.ManagementFactory;
  3. import java.lang.management.MemoryMXBean;
  4. import java.lang.management.MemoryUsage;
  5. import java.lang.management.RuntimeMXBean;
  6. /**
  7. * 本实验效果可以在java.lang.management中得到
  8. * @author fb
  9. *
  10. */
  11. public class Test extends Thread{
  12.  RuntimeMXBean mxbean;
  13.  private void setFactory(){  
  14.    mxbean = ManagementFactory.getRuntimeMXBean();
  15.    //以下是取得虚拟机的属性
  16.    System.out.println(mxbean.getVmVendor());
  17.    System.out.println(mxbean.getVmName());
  18.    System.out.println(mxbean.getClassPath());
  19.    //类管理接口
  20.    ClassLoadingMXBean aClassLoadingMXBean=ManagementFactory.getClassLoadingMXBean();  
  21.    System.out.println(aClassLoadingMXBean.getLoadedClassCount());
  22.    //内存管理接口
  23.    MemoryMXBean aMemoryMXBean=ManagementFactory.getMemoryMXBean();
  24.    System.out.println(aMemoryMXBean.getObjectPendingFinalizationCount());//返回其终止被挂起的对象的近似数目
  25.    //返回 Java 虚拟机使用的非堆内存的当前使用量
  26.    MemoryUsage aMemoryUsage=aMemoryMXBean.getNonHeapMemoryUsage();      //虚拟机启动时从系统得到的内存(以字节为单位)
  27.    System.out.println("虚拟机启动时从系统得到的内存:"+aMemoryUsage.getInit());   //表示当前已经使用的内存量(以字节为单位)
  28.    System.out.println("当前已经使用的内存量:"+aMemoryUsage.getUsed());   //表示保证可以由 Java 虚拟机使用的内存量(以字节为单位)
  29.    System.out.println("保证可以由 Java 虚拟机使用的内存量:"+aMemoryUsage.getCommitted());   //表示可以用于内存管理的最大内存量(以字节为单位)
  30.    System.out.println("内存管理的最大内存量:"+aMemoryUsage.getMax());
  31.    System.out.println("总体描述:"+aMemoryUsage.toString());
  32.  }
  33.  public void run(){
  34.    try {    
  35.      while(true){
  36.        setFactory();
  37.        sleep(1000);
  38.      }
  39.    } catch (InterruptedException e) {
  40.      e.printStackTrace();
  41.    }
  42.    
  43.  }
  44.  public static void main(String[] args) {
  45.    Test aTest=new Test();
  46.    aTest.start();
  47.  }
  48. }运行结果:
  49. C:/java>java   Test
  50. Sun Microsystems Inc.
  51. Java HotSpot(TM) Client VM
  52. .;c:/jdk1.5/lib
  53. 306
  54. 0
  55. 虚拟机启动时从系统得到的内存:29556736
  56. 当前已经使用的内存量:12362144
  57. 保证可以由 Java 虚拟机使用的内存量:29851648
  58. 内存管理的最大内存量:121634816
  59. 总体描述:init = 29556736(28864K) used = 12362144(12072K) committed = 29851648(29152K) max = 121634816(118784K)
  60. 如果你想要给自己的软件提供这样的检测接口,那么只要做一个MBeanServer就可以了。这是一个相当不错的想法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值