JDK5.0 特性 监控与管理虚拟机
来自: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 特性 监控与管理虚拟机的更多相关文章
- JDK5.0 特性-线程同步装置之Semaphore
来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291474.html import java.util.ArrayList; import j ...
- JDK5.0 特性-线程锁Lock
来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291470.html import java.util.concurrent.Executor ...
- JDK5.0特性-线程 Callable和Future
来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291466.html import java.util.concurrent.Callable ...
- JDK5.0 特性线程 同步装置之CountDownLatch 同步装置之CyclicBarrier 线程 BlockingQueue
来自:http://www.cnblogs.com/taven/category/475298.html import java.util.concurrent.CountDownLatch; imp ...
- JDK5.0 特性-线程 Condition
来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291471.html import java.util.concurrent.Executor ...
- JDK5.0 特性-线程任务执行架构 ScheduledExecutorService
来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291469.html import java.util.concurrent.Callable ...
- JDK5.0特性,使用ProcessBuilder执行本地命令
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.IO ...
- 集合框架-工具类-JDK5.0特性-函数可变参数
1 package cn.itcast.p4.news.demo; 2 3 public class ParamterDemo { 4 5 public static void main(String ...
- 集合框架-工具类-JDK5.0特性-ForEach循环
1 package cn.itcast.p4.news.demo; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 impo ...
随机推荐
- CentOS 7 下编译安装lnmp之MySQL篇详解
一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.MySQL下载 MySQL ...
- BTSync 2.0 Vs. 1.4 Folders
Sync 2.0 supports boths new 2.0 folders and classic 1.4 folders, s o when you upgrade your Sync it w ...
- 通过adb把apk安装到系统分区
通过adb把apk安装到系统分区 以谷歌拼音为例:GooglePinyin1.4.2.apk提取出so文件libjni_googlepinyinime_4.solibjni_googlepinyini ...
- GDB高级用法
http://blog.csdn.net/wwwsq/article/details/7086151
- axure8.1可用授权码
Licensee: University of Science and Technology of China (CLASSROOM)Key: DTXRAnPn1P65Rt0xB4eTQ+4bF5IU ...
- java基础学习总结——网络编程
一.网络基础概念 首先理清一个概念:网络编程 != 网站编程,网络编程现在一般称为TCP/IP编程.
- authentication not supported Connect to TFS Git from Xamarin Studio (non-hosted, locally installed TFS 2013)
There are several instructions on how to connect to TFS Git from Xamarin Studio if you're using the ...
- Unity3d Http Get请求
新浪微博的OpenAPI登录 public static IEnumerator LoginRequest(string userid, string passwd, Action<string ...
- js 设置焦点 判断控件是否获得焦点 判断哪个控件获得焦点
设置焦点 <html> <head> <title>设置焦点</title> <mce:script language ="javasc ...
- JSONString 与 JSONData 与字典或者数组互相转化
JSON JSON相关的,数据彼此间的转化进行了简单地封装,源码如下,支持arc与非arc YXJSON.h + YXJSON.m // // YXJSON.h // // JSONString 与 ...