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 ...
随机推荐
- C#高级编程9-第9章 字符串和正则表达式
字符串和正则表达式 String类 String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显 ...
- ROS知识(8)----CMakeLists.txt文件编写的理解
ROS(Indigo)编程必须要理解CMakeList.txt的编写规则,教程地址:catkin/CMakeLists.txt,官网有相关的教程,中文的翻译版本写的很不错,教程地址:ROS中的CMak ...
- [Dynamic Language] Python3.7 源码安装 ModuleNotFoundError: No module named '_ctypes' 解决记录
Python3.7 源码安装 ModuleNotFoundError: No module named '_ctypes' 解决记录 源码安装时报错 File "/home/abeenser ...
- POJ 1470 Closest Common Ancestors (LCA, dfs+ST在线算法)
Closest Common Ancestors Time Limit: 2000MS Memory Limit: 10000K Total Submissions: 13370 Accept ...
- 电感式DC/DC变换器工作原理
http://www.amobbs.com/thread-3293203-1-1.html 首先必须要了解电感的一些特性:电磁转换与磁储能.其它所有参数都是由这两个特性引出来的. 电感回路通电瞬间 断 ...
- easyui中combobox 验证输入的值必须为选项框中的数据
当作为提示框的方式时,combobox必须设置为允许用户输入的模式,但是当用户输入后未选择正确的数据就直接按tab或点击鼠标离开控件会导致用户输入无效的值并且通过验证,为了避免这种情况的发生我们需要对 ...
- Material Design(原质化设计)视觉设计语言规范 踏得网镜像
Android 5.0 Lollipop(棒棒糖,也就是之前的代称Android L)全面实践了谷歌最新研发的 Material Design 设计语言规范,只是该设计规范并不是仅针对移动平台. 我们 ...
- SYS.AUD$无法扩容导致无法登录的问题
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/bisal/article/details/19068663 昨天同事说有个测试库无法登录了,用PLS ...
- maven项目如何生成war文件
配置 你的pom.xml文件,在你的overview视窗里 配置 packaging为 war 然后然后点击 pom.xml右键,run as 选择 install 或是 package如果项目没问题 ...
- 6 cocos2dx粒子效果,类图关系,系统原生粒子和自己定义粒子效果,粒子编译器软件,爆炸粒子效果,烟花效果,火焰效果,流星效果,漩涡粒子效果,雪花效果,烟雾效果,太阳效果,下雨效果
1 粒子 演示样例 2 类图关系 3 系统原生粒子 CCParticleSystem 全部粒子系统的父类 CCParticleSystemPoint. CCParticleSystemQuad ...