博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDK5.0 特性 监控与管理虚拟机
阅读量:5205 次
发布时间:2019-06-14

本文共 13406 字,大约阅读时间需要 44 分钟。

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

 

1 import java.lang.management.ClassLoadingMXBean;  2   3 import java.lang.management.CompilationMXBean;  4   5 import java.lang.management.GarbageCollectorMXBean;  6   7 import java.lang.management.ManagementFactory;  8   9 import java.lang.management.MemoryMXBean; 10  11 import java.lang.management.OperatingSystemMXBean; 12  13 import java.lang.management.RuntimeMXBean; 14  15 import java.lang.management.ThreadMXBean; 16  17 import java.util.List; 18  19   20  21 /** 22  23         本例介绍如何监控和管理Java虚拟机,包括获取Java虚拟机的内存使用情况、线程数、运行时间等。 24  25         在J2SE5.0中使用Bean监控和管理Java虚拟机,java.lang.management.ManagementFactory是管理Bean的工厂类, 26  27 通过它的get系列方法能够获得不同的管理Bean的实例。 28  29 1. java.lang.management.MemoryMXBean:                                该Bean用于管理Java虚拟机的内存系统。 30  31                                                                                                                                一个Java虚拟机具有一个实例。 32  33 2.java.lang.management.ClassLoadingMXBean:                     该Bean用于管理Java虚拟机的类加载系统。 34  35                                                                                                                                一个Java虚拟机具有一个实例。 36  37 3.java.lang.management.TreadMXBean:                                       该Bean用于管理Java虚拟机的线程系统。 38  39                                                                                                                                 一个Java虚拟机具有一个实例。 40  41 4.java.lang.management.RuntimeMXBean:                                 该Bean用于管理Java虚拟机的线程系统。 42  43                                                                                                                                 一个Java虚拟机具有一个实例。 44  45 5.java.lang.management.OperatingSystemMXBean:            该Bean用于管理操作系统。 46  47                                                                                                                                 一个Java虚拟机具有一个实例。 48  49 6.java.lang.management.CompilationMXBean:                        该Bean用于管理Java虚拟机的编译系统。 50  51                                                                                                                                  一个Java虚拟机具有一个实例。 52  53 7.java.lang.management.GarbageCollectorMXBean:             该Bean用于管理Java虚拟机的垃圾回收系统。 54  55                                                                                                                                  一个Java虚拟机具有一个或者多个实例。 56  57  */ 58  59 public class JDKMBean { 60  61                    public static void printMemoryMXBean(){ 62  63                                       //获得单一实例 64  65                                       MemoryMXBean instance = ManagementFactory.getMemoryMXBean(); 66  67                                       System.out.printf("%n---%s---%n",instance.getClass().getName()); 68  69                                       //返回用于对象分配的堆的当前内存使用量 70  71                                       System.out.printf("%s: %s%n","HeapMemoryUsage",instance.getHeapMemoryUsage()); 72  73                                       //返回Java虚拟机使用的非堆内存的当前使用量 74  75                                       System.out.printf("%s: %s%n","getNonHeapMemoryUsage",instance.getNonHeapMemoryUsage()); 76  77                                       instance.gc(); 78  79                    } 80  81                    82  83                    public static void printClassLoadingMXBean(){ 84  85                                       //获得单一实例 86  87                                       ClassLoadingMXBean instance = ManagementFactory.getClassLoadingMXBean(); 88  89                                       System.out.printf("%n---%s---%n",instance.getClass().getName()); 90  91                                       //返回当前加载到Java虚拟机中的类的数量 92  93                                       System.out.printf("%s: %s%n","LoadedClassCount",instance.getLoadedClassCount()); 94  95                                       //返回自Java虚拟机开始执行到目前已经加载的类的总数 96  97                                       System.out.printf("%s: %s%n","TotalLoadedClassCount",instance.getTotalLoadedClassCount()); 98  99                                       //返回自Java虚拟机开始执行到目前已经卸载的类的总数100 101                                       System.out.printf("%s: %s%n","UnloadedLoadedClassCount",instance.getUnloadedClassCount());102 103                    }104 105                   106 107                    public static void printThreadMXBean(){108 109                                       //获得单一实例110 111                                       ThreadMXBean instance = ManagementFactory.getThreadMXBean();112 113                                       System.out.printf("%n---%s---%n",instance.getClass().getName());114 115                                       //返回活动线程的当前数目,包括守护线程和非守护线程116 117                                       System.out.printf("%s: %s%n","ThreadCount",instance.getThreadCount());118 119                                       //返回活动线程ID120 121                                       System.out.printf("%s: %n","Thread IDs");122 123                                       long[] ids = instance.getAllThreadIds();124 125                                       for(long id : ids){126 127                                                          System.out.printf("%s;    ", id);128 129                                       }130 131                                       System.out.println();132 133                                       //返回活动守护线程的当前数目134 135                                       System.out.printf("%s: %s%n","DaemonThreadCount",instance.getDaemonThreadCount());136 137                                       //返回自从java虚拟机启动或峰值重置以来峰值活动线程计数138 139                                       System.out.printf("%s: %s%n","PeakThreadCount",instance.getPeakThreadCount());140 141                                       //返回当前线程的总CPU时间142 143                                       System.out.printf("%s: %s%n","CurrentCpuTime",instance.getCurrentThreadCpuTime());144 145                                       //返回当前线程在用户模式中执行的CPU时间146 147                                       System.out.printf("%s: %s%n","CurrentThreadCpuTime",instance.getCurrentThreadUserTime());148 149                    }150 151                   152 153                    public static void printRuntimeMXBean(){154 155                                       //获得单一实例156 157                                       RuntimeMXBean instance = ManagementFactory.getRuntimeMXBean();158 159                                       System.out.printf("%n---%s---%n",instance.getClass().getName());160 161                                       //返回由引导类加载器用于搜索类文件的引导类路径162 163                                       System.out.printf("%s: %s%n","BootClassPath",instance.getBootClassPath());164 165                                       //返回系统类加载器用于搜索类文件的Java类路径166 167                                       System.out.printf("%s: %s%n","ClassPath",instance.getClassPath());168 169                                       //引用传递给Java虚拟机的输入变量,其中不包括传递给main方法的变量170 171                                       System.out.printf("%s: %n","InputArguments");172 173                                       List
args = instance.getInputArguments();174 175 for(String arg : args){176 177 System.out.printf("%s; ",arg);178 179 }180 181 //返回Java库路径182 183 System.out.printf("%s: %s%n","LibraryPath",instance.getLibraryPath());184 185 //返回正在运行的Java虚拟机实现的管理接口的规范版本186 187 System.out.printf("%s: %s%n","ManagementSpecVersion",instance.getManagementSpecVersion());188 189 //返回正在运行的Java虚拟机的名称190 191 System.out.printf("%s: %s%n","Name",instance.getName());192 193 194 195 //返回Java虚拟机规范名称196 197 System.out.printf("%s: %s%n","SpecName",instance.getSpecName());198 199 //返回Java虚拟机规范提供商200 201 System.out.printf("%s: %s%n","SpecVendor",instance.getSpecVendor());202 203 //返回Java虚拟机规范版本204 205 System.out.printf("%s: %s%n","SpecVersion",instance.getSpecVersion());206 207 208 209 //返回Java虚拟机实现名称210 211 System.out.printf("%s: %s%n","VmName",instance.getVmName());212 213 //返回Java虚拟机实现提供商214 215 System.out.printf("%s: %s%n","VmVendor",instance.getVmVendor());216 217 //返回Java虚拟机实现版本218 219 System.out.printf("%s: %s%n","VmVersion",instance.getVmVersion());220 221 222 223 //返回Java虚拟机的启动时间224 225 System.out.printf("%s: %s%n","startTime",instance.getStartTime());226 227 //返回Java虚拟机的正常运行时间228 229 System.out.printf("%s: %s%n","Uptime",instance.getUptime());230 231 }232 233 234 235 public static void printOperatingSystemMXBean(){236 237 //获得单一实例238 239 OperatingSystemMXBean instance = ManagementFactory.getOperatingSystemMXBean();240 241 System.out.printf("%n---%s---%n",instance.getClass().getName());242 243 //返回操作系统的架构244 245 System.out.printf("%s: %s%n","Arch",instance.getArch());246 247 //返回Java虚拟机可以使用的处理器数目248 249 System.out.printf("%s: %s%n","AvailableProcessors",instance.getAvailableProcessors());250 251 //返回操作系统名称252 253 System.out.printf("%s: %s%n","Name",instance.getName());254 255 //返回操作系统版本256 257 System.out.printf("%s: %s%n","Version",instance.getVersion());258 259 }260 261 262 263 public static void printCompilationMXBean(){264 265 //获得单一实例266 267 CompilationMXBean instance = ManagementFactory.getCompilationMXBean();268 269 System.out.printf("%n---%s---%n",instance.getClass().getName());270 271 //返回即时(JIT)编译器的名称272 273 System.out.printf("%s: %s%n","JIT",instance.getName());274 275 //返回在编译上花费的累积耗费时间的近似值276 277 System.out.printf("%s: %s%n","TotalCompilationTime",instance.getTotalCompilationTime());278 279 }280 281 282 283 public static void printGargageCollectorMXBean(){284 285 //获得单一实例286 287 List
instances = ManagementFactory.getGarbageCollectorMXBeans();288 289 System.out.printf("%n---%s---%n",GarbageCollectorMXBean.class.getName());290 291 //遍历每个实例292 293 for(GarbageCollectorMXBean instance : instances){294 295 //返回垃圾收集器的名字296 297 System.out.printf("***%s: %s***%n","Name",instance.getName());298 299 //返回已发生的回收的总次数300 301 System.out.printf("%s: %s%n","CollectionCount",instance.getCollectionCount());302 303 //返回近似的累积回收时间304 305 System.out.printf("%s: %s%n","CollectionTime",instance.getCollectionTime());306 307 }308 309 }310 311 312 313 public static void main(String[] args){314 315 JDKMBean.printMemoryMXBean();316 317 JDKMBean.printClassLoadingMXBean();318 319 JDKMBean.printThreadMXBean();320 321 JDKMBean.printRuntimeMXBean();322 323 JDKMBean.printOperatingSystemMXBean();324 325 JDKMBean.printCompilationMXBean();326 327 JDKMBean.printGargageCollectorMXBean();328 329 }330 331 }

 

转载于:https://www.cnblogs.com/sunxucool/p/3842418.html

你可能感兴趣的文章
sql查询远程数据库的表的数据并填充到本地数据库的表
查看>>
YII缓存依赖的应用
查看>>
决策树在机器学习的理论学习与实践
查看>>
Biee 11g权限详解
查看>>
minggw 安装
查看>>
Jquery操作cookie,实现简单的记住用户名的操作
查看>>
[BZOJ1196][HNOI2006]公路修建问题 二分答案+最小生成树
查看>>
PHP基础入门(二)
查看>>
[Luogu P3119] [USACO15JAN]草鉴定Grass Cownoisseur (缩点+图上DP)
查看>>
【原创】大数据基础之Zookeeper(4)应用场景
查看>>
18款在线代码片段测试工具
查看>>
20.C++- &&,||逻辑重载操作符的缺陷、,逗号重载操作符的分析
查看>>
静态变量数组实现LRU算法
查看>>
在SQL中怎么把一列字符串拆分为多列
查看>>
中文系统 上传file的input显示英文
查看>>
css样式写一个三角形
查看>>
比callback更简洁的链式执行promise
查看>>
android permission
查看>>
javascript获取textarea中所选文本的开始位置、结束位置和选择的文本
查看>>
【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
查看>>