来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291465.html

 import java.lang.management.ClassLoadingMXBean;

 import java.lang.management.CompilationMXBean;

 import java.lang.management.GarbageCollectorMXBean;

 import java.lang.management.ManagementFactory;

 import java.lang.management.MemoryMXBean;

 import java.lang.management.OperatingSystemMXBean;

 import java.lang.management.RuntimeMXBean;

 import java.lang.management.ThreadMXBean;

 import java.util.List;

 /**

         本例介绍如何监控和管理Java虚拟机,包括获取Java虚拟机的内存使用情况、线程数、运行时间等。

         在J2SE5.0中使用Bean监控和管理Java虚拟机,java.lang.management.ManagementFactory是管理Bean的工厂类,

 通过它的get系列方法能够获得不同的管理Bean的实例。

 1. java.lang.management.MemoryMXBean:                                该Bean用于管理Java虚拟机的内存系统。

                                                                                                                                一个Java虚拟机具有一个实例。

 2.java.lang.management.ClassLoadingMXBean:                     该Bean用于管理Java虚拟机的类加载系统。

                                                                                                                                一个Java虚拟机具有一个实例。

 3.java.lang.management.TreadMXBean:                                       该Bean用于管理Java虚拟机的线程系统。

                                                                                                                                 一个Java虚拟机具有一个实例。

 4.java.lang.management.RuntimeMXBean:                                 该Bean用于管理Java虚拟机的线程系统。

                                                                                                                                 一个Java虚拟机具有一个实例。

 5.java.lang.management.OperatingSystemMXBean:            该Bean用于管理操作系统。

                                                                                                                                 一个Java虚拟机具有一个实例。

 6.java.lang.management.CompilationMXBean:                        该Bean用于管理Java虚拟机的编译系统。

                                                                                                                                  一个Java虚拟机具有一个实例。

 7.java.lang.management.GarbageCollectorMXBean:             该Bean用于管理Java虚拟机的垃圾回收系统。

                                                                                                                                  一个Java虚拟机具有一个或者多个实例。

  */

 public class JDKMBean {

                    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();

                    }

                    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","UnloadedLoadedClassCount",instance.getUnloadedClassCount());

                    }

                    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.println();

                                       //返回活动守护线程的当前数目

                                       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","CurrentCpuTime",instance.getCurrentThreadCpuTime());

                                       //返回当前线程在用户模式中执行的CPU时间

                                       System.out.printf("%s: %s%n","CurrentThreadCpuTime",instance.getCurrentThreadUserTime());

                    }

                    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());

                    }

                    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());

                    }

                    public static void printCompilationMXBean(){

                                       //获得单一实例

                                       CompilationMXBean instance = ManagementFactory.getCompilationMXBean();

                                       System.out.printf("%n---%s---%n",instance.getClass().getName());

                                       //返回即时(JIT)编译器的名称

                                       System.out.printf("%s: %s%n","JIT",instance.getName());

                                       //返回在编译上花费的累积耗费时间的近似值

                                       System.out.printf("%s: %s%n","TotalCompilationTime",instance.getTotalCompilationTime());

                    }

                    public static void printGargageCollectorMXBean(){

                                       //获得单一实例

                                       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());

                                       }

                    }

                    public static void main(String[] args){

                                       JDKMBean.printMemoryMXBean();

                                       JDKMBean.printClassLoadingMXBean();

                                       JDKMBean.printThreadMXBean();

                                       JDKMBean.printRuntimeMXBean();

                                       JDKMBean.printOperatingSystemMXBean();

                                       JDKMBean.printCompilationMXBean();

                                       JDKMBean.printGargageCollectorMXBean();

                    }

 }

JDK5.0 特性 监控与管理虚拟机的更多相关文章

  1. JDK5.0 特性-线程同步装置之Semaphore

    来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291474.html import java.util.ArrayList; import j ...

  2. JDK5.0 特性-线程锁Lock

    来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291470.html import java.util.concurrent.Executor ...

  3. JDK5.0特性-线程 Callable和Future

    来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291466.html import java.util.concurrent.Callable ...

  4. JDK5.0 特性线程 同步装置之CountDownLatch 同步装置之CyclicBarrier 线程 BlockingQueue

    来自:http://www.cnblogs.com/taven/category/475298.html import java.util.concurrent.CountDownLatch; imp ...

  5. JDK5.0 特性-线程 Condition

    来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291471.html import java.util.concurrent.Executor ...

  6. JDK5.0 特性-线程任务执行架构 ScheduledExecutorService

    来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291469.html import java.util.concurrent.Callable ...

  7. JDK5.0特性,使用ProcessBuilder执行本地命令

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.IO ...

  8. 集合框架-工具类-JDK5.0特性-函数可变参数

    1 package cn.itcast.p4.news.demo; 2 3 public class ParamterDemo { 4 5 public static void main(String ...

  9. 集合框架-工具类-JDK5.0特性-ForEach循环

    1 package cn.itcast.p4.news.demo; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 impo ...

随机推荐

  1. 单源最短路径-迪杰斯特拉算法(Dijkstra's algorithm)

    Dijkstra's algorithm 迪杰斯特拉算法是目前已知的解决单源最短路径问题的最快算法. 单源(single source)最短路径,就是从一个源点出发,考察它到任意顶点所经过的边的权重之 ...

  2. 第三方网站返回hybrid app H5页面缓存问题应对策略

    最近负责公司各产品线购买模块的开发,各项功能如期开发完成后测试那边反馈回来一个问题:IOS手机在点击支付宝购买后,跳转到支付宝网站时不输入支付密码,直接点返回,返回到我们自己的APP购买界面发现页面显 ...

  3. Unity的界面排版: RectTransform

    看Unity3D文档像看国内教课书一样,一些概念,不懂的时候看还是不懂,明白了以后再看,好像也没有说错.好几个做Unity3D的朋友跟我吐槽过U3D的文档质量,相比Apple贴心的技术文档相去甚远. ...

  4. windowsmobile 开发环境

    Windows Mobile 6开发环境的配置过程 需要的文件列表:1.Visual Studio 2005 Professional及更高的版本(Visual Studio 2005 Express ...

  5. 手机应用:非功能需求 Check List

    服务状态防止并发 网络保持:无线网络,GPRS 网络连接:https,手机助手代理 电量 屏幕保持防止休眠 下载重试机制 定时检查XML 限速下载,线程休眠 下载出错反馈机制 消息广播 状态栏通知 进 ...

  6. 高性能 Socket 组件 HP-Socket v3.2.1 正式公布

    HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包括服务端组件.client组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C+ ...

  7. myql --- mysqldump使用方法

    1.mysqldump的几种常用方法: (1)导出整个数据库(包括数据库中的数据) mysqldump -u username -p dbname > dbname.sql (2)导出数据库结构 ...

  8. 再有人问你synchronized是什么,就把这篇文章发给他

    在再有人问你Java内存模型是什么,就把这篇文章发给他.中我们曾经介绍过,Java语言为了解决并发编程中存在的原子性.可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronize ...

  9. 定义和使用EL函数

    EL为表达式语言,在EL中,允许定义和使用函数.下面将介绍如何定义和使用EL的函数. 1. 定义和使用函数 函数的定义和使用分为以下3个步骤: (1)编写一个Java类,并在该类中编写公用的静态方法, ...

  10. 我所遭遇过的游戏中间件--Kynapse

    我所遭遇过的游戏中间件--Kynapse Autodesk Kynapse游戏中间件是一款面向游戏开发.非玩家控制角色实时模拟的领先的人工智能解决方案.Kynapse具有先进的路径查找功能,比如三维路 ...