ClassLoadingMXBean 用于 Java 虚拟机的类加载系统的管理接口。
CompilationMXBean 用于 Java 虚拟机的编译系统的管理接口。
GarbageCollectorMXBean 用于 Java 虚拟机的垃圾回收的管理接口。
MemoryManagerMXBean 内存管理器的管理接口。
MemoryMXBean Java 虚拟机的内存系统的管理接口。
MemoryPoolMXBean 内存池的管理接口。
OperatingSystemMXBean 用于操作系统的管理接口,Java 虚拟机在此操作系统上运行。
RuntimeMXBean Java 虚拟机的运行时系统的管理接口。
ThreadMXBean

Java 虚拟机线程系统的管理接口。

  1. import java.lang.management.ClassLoadingMXBean;
  2. import java.lang.management.CompilationMXBean;
  3. import java.lang.management.GarbageCollectorMXBean;
  4. import java.lang.management.ManagementFactory;
  5. import java.lang.management.MemoryMXBean;
  6. import java.lang.management.MemoryManagerMXBean;
  7. import java.lang.management.MemoryPoolMXBean;
  8. import java.lang.management.MemoryUsage;
  9. import java.lang.management.OperatingSystemMXBean;
  10. import java.lang.management.RuntimeMXBean;
  11. import java.lang.management.ThreadMXBean;
  12. import java.util.List;
  13.  
  14. import javax.management.MBeanServerConnection;
  15.  
  16. public class MBeanDemo {
  17.  
  18. public static void main(String[] args) {
  19.  
  20. showJvmInfo();
  21. showMemoryInfo();
  22. showSystem();
  23. showClassLoading();
  24. showCompilation();
  25. showThread();
  26. showGarbageCollector();
  27. showMemoryManager();
  28. showMemoryPool();
  29. }
  30.  
  31. /**
  32. * Java 虚拟机的运行时系统
  33. */
  34. public static void showJvmInfo() {
  35. RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean();
  36. String vendor = mxbean.getVmVendor();
  37. System.out.println("jvm name:" + mxbean.getVmName());
  38. System.out.println("jvm version:" + mxbean.getVmVersion());
  39. System.out.println("jvm bootClassPath:" + mxbean.getBootClassPath());
  40. System.out.println("jvm start time:" + mxbean.getStartTime());
  41. }
  42.  
  43. /**
  44. * Java 虚拟机的内存系统
  45. */
  46. public static void showMemoryInfo() {
  47. MemoryMXBean mem = ManagementFactory.getMemoryMXBean();
  48. MemoryUsage heap = mem.getHeapMemoryUsage();
  49. System.out.println("Heap committed:" + heap.getCommitted() + " init:" + heap.getInit() + " max:"
  50. + heap.getMax() + " used:" + heap.getUsed());
  51. }
  52.  
  53. /**
  54. * Java 虚拟机在其上运行的操作系统
  55. */
  56. public static void showSystem() {
  57. OperatingSystemMXBean op = ManagementFactory.getOperatingSystemMXBean();
  58. System.out.println("Architecture: " + op.getArch());
  59. System.out.println("Processors: " + op.getAvailableProcessors());
  60. System.out.println("System name: " + op.getName());
  61. System.out.println("System version: " + op.getVersion());
  62. System.out.println("Last minute load: " + op.getSystemLoadAverage());
  63. }
  64.  
  65. /**
  66. * Java 虚拟机的类加载系统
  67. */
  68. public static void showClassLoading(){
  69. ClassLoadingMXBean cl = ManagementFactory.getClassLoadingMXBean();
  70. System.out.println("TotalLoadedClassCount: " + cl.getTotalLoadedClassCount());
  71. System.out.println("LoadedClassCount" + cl.getLoadedClassCount());
  72. System.out.println("UnloadedClassCount:" + cl.getUnloadedClassCount());
  73. }
  74.  
  75. /**
  76. * Java 虚拟机的编译系统
  77. */
  78. public static void showCompilation(){
  79. CompilationMXBean com = ManagementFactory.getCompilationMXBean();
  80. System.out.println("TotalCompilationTime:" + com.getTotalCompilationTime());
  81. System.out.println("name:" + com.getName());
  82. }
  83.  
  84. /**
  85. * Java 虚拟机的线程系统
  86. */
  87. public static void showThread(){
  88. ThreadMXBean thread = ManagementFactory.getThreadMXBean();
  89. System.out.println("ThreadCount" + thread.getThreadCount());
  90. System.out.println("AllThreadIds:" + thread.getAllThreadIds());
  91. System.out.println("CurrentThreadUserTime" + thread.getCurrentThreadUserTime());
  92. //......还有其他很多信息
  93. }
  94.  
  95. /**
  96. * Java 虚拟机中的垃圾回收器。
  97. */
  98. public static void showGarbageCollector(){
  99. List<GarbageCollectorMXBean> gc = ManagementFactory.getGarbageCollectorMXBeans();
  100. for(GarbageCollectorMXBean GarbageCollectorMXBean : gc){
  101. System.out.println("name:" + GarbageCollectorMXBean.getName());
  102. System.out.println("CollectionCount:" + GarbageCollectorMXBean.getCollectionCount());
  103. System.out.println("CollectionTime" + GarbageCollectorMXBean.getCollectionTime());
  104. }
  105. }
  106.  
  107. /**
  108. * Java 虚拟机中的内存管理器
  109. */
  110. public static void showMemoryManager(){
  111. List<MemoryManagerMXBean> mm = ManagementFactory.getMemoryManagerMXBeans();
  112. for(MemoryManagerMXBean eachmm: mm){
  113. System.out.println("name:" + eachmm.getName());
  114. System.out.println("MemoryPoolNames:" + eachmm.getMemoryPoolNames().toString());
  115. }
  116. }
  117.  
  118. /**
  119. * Java 虚拟机中的内存池
  120. */
  121. public static void showMemoryPool(){
  122. List<MemoryPoolMXBean> mps = ManagementFactory.getMemoryPoolMXBeans();
  123. for(MemoryPoolMXBean mp : mps){
  124. System.out.println("name:" + mp.getName());
  125. System.out.println("CollectionUsage:" + mp.getCollectionUsage());
  126. System.out.println("type:" + mp.getType());
  127. }
  128. }
  129.  
  130. /**
  131. * 访问 MXBean 的方法的三种方法
  132. */
  133. public static void visitMBean(){
  134.  
  135. //第一种直接调用同一 Java 虚拟机内的 MXBean 中的方法。
  136. RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean();
  137. String vendor1 = mxbean.getVmVendor();
  138. System.out.println("vendor1:" + vendor1);
  139.  
  140. //第二种通过一个连接到正在运行的虚拟机的平台 MBeanServer 的 MBeanServerConnection。
  141. MBeanServerConnection mbs = null;
  142. // Connect to a running JVM (or itself) and get MBeanServerConnection
  143. // that has the JVM MXBeans registered in it
  144.  
  145. /*
  146. try {
  147. // Assuming the RuntimeMXBean has been registered in mbs
  148. ObjectName oname = new ObjectName(ManagementFactory.RUNTIME_MXBEAN_NAME);
  149. String vendor2 = (String) mbs.getAttribute(oname, "VmVendor");
  150. System.out.println("vendor2:" + vendor2);
  151. } catch (Exception e) {
  152. e.printStackTrace();
  153. }
  154. */
  155.  
  156. //第三种使用 MXBean 代理
  157. // MBeanServerConnection mbs3 = null;
  158. // RuntimeMXBean proxy;
  159. // try {
  160. // proxy = ManagementFactory.newPlatformMXBeanProxy(mbs3,ManagementFactory.RUNTIME_MXBEAN_NAME,
  161. // RuntimeMXBean.class);
  162. // String vendor = proxy.getVmVendor();
  163. // } catch (IOException e) {
  164. // e.printStackTrace();
  165. // }
  166.  
  167. }
  168.  
  169. }

来源于:http://blog.csdn.net/zhongweijian/article/details/7619383/

java使用java.lang.management监视和管理 Java 虚拟机的更多相关文章

  1. 【转】java使用java.lang.management监视和管理 Java 虚拟机

    原文地址:https://blog.csdn.net/zhongweijian/article/details/7619383 软件包 java.lang.management 提供管理接口,用于监视 ...

  2. Java 监控基础 - 使用 JMX 监控和管理 Java 程序

    点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码网站 已经收录,有很多知识点和系列文章. 此篇文 ...

  3. Java Business Process Management(业务流程管理) 初识环境搭建

    一.简介 (一)什么是jbpm JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易 ...

  4. Spring异常解决 java.lang.NullPointerException,配置spring管理hibernate时出错

    @Repository public class SysUerCDAO { @Autowired private Hibernate_Credit hibernate_credit; /** * 根据 ...

  5. 远程监视jboss应用java内存的配置

    前言 因为最近一个项目部署在客户那边运行一个月左右就会出现java内存溢出的问题,为了时时监控java内存的情况需要,需要远程查看服务器上java内存的一些情况.在公司模拟部署了远程监视linux下项 ...

  6. 远程监视jboss应用java内存的配置(实测) .

    前言 因为最近一个项目部署在客户那边运行一个月左右就会出现java内存溢出的问题,为了时时监控java内存的情况需要,需要远程查看服务器上java内存的一些情况.在公司模拟部署了远程监视linux下项 ...

  7. Java 类加载机制 ClassLoader Class.forName 内存管理 垃圾回收GC

    [转载] :http://my.oschina.net/rouchongzi/blog/171046 Java之类加载机制 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指 ...

  8. Java中的垃圾回收机制&内存管理&内存泄漏

    1. Java在创建对象时,会自动分配内存,并当该对象引用不存在的时候,释放这块内存. 为什么呢? 因为Java中使用被称为垃圾收集器的技术来监视Java程序的运行,当对象不再使用时,就自动释放对象所 ...

  9. java面试复习重点:类的管理及常用工具,教你抓住面试的重点!

    java复习: 类的管理及常用工具类 包 写在程序文件的第一行 一个Java 源文件中只能声明一个包, 且声明语句只能作为源文件的第一条指令 导入类能导入非public类,但是不能用因为在其他包缺省的 ...

随机推荐

  1. Error while executing: am start -n

    单纯clean project是不行的,选择File-Invalidate Caches/Restart,清除缓存,重启AS Android NDK 是在SDK前面又加上了"原生" ...

  2. [快速幂][NOIP2012]转圈游戏

    转圈游戏 题目描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置, ...

  3. predict predict_proba区别的小例子

    predict_proba返回的是一个n行k列的数组,第i行第j列上的数值是模型预测第i个预测样本的标签为j的概率.所以每一行的和应该等于1. 举个例子 >>> from sklea ...

  4. [JAVA]JAVA章3 如何获取及查看DUMP文件

    一.dump基本概念 在故障定位(尤其是out of memory)和性能分析的时候,经常会用到一些文件来帮助我们排除代码问题.这些文件记录了JVM运行期间的内存占用.线程执行等情况,这就是我们常说的 ...

  5. 教你轻松快速学会用Calibre TXT转MOBI

    教你轻松快速学会TXT转为有目录的MOBI###授人以渔,lllll5500制作### 需使用软件按先后顺序如下:一.排版助手 官网http://www.gidot.net/typesetter/二. ...

  6. 学习blinker

    from blinker import signal do_sth = signal('do_sth') #创建信号 def process(f, a, b, **kwargs): f(a, b, * ...

  7. Unix时间戳转日期时间格式,C#、Java、Python各语言实现!

    之前有个Q上好友没事问我,怎么自己写Unix时间戳转日期时间?于是我就顺手写了个C#版本给他!最近想起来,就萌发多写几个语言的版本分享,权当练习思路外加熟悉另外两种语言. 先说转换步骤 先处理年份,从 ...

  8. 论如何优雅地拿下PHPCMS

    作者:J0o1ey 原文来自:论如何优雅地拿下PHPCMS 一.PHPCM       PHP是国内领先的网站内容管理系统,同时也是一个开源的PHP开发框架,采用PHP5+MYSQL进行开发,拥有非常 ...

  9. web API简介(一):API,Ajax和Fetch

    概述 今天逛MDN,无意中看到了web API简介,觉得挺有意思的,就认真读了一下. 下面是我在读的时候对感兴趣的东西的总结,供自己开发时参考,相信对其他人也有用. 什么是API API (Appli ...

  10. Archive required for library “xxx” cannot be read or is not a valid zip file报错解决

    在项目中导入别人的maven项目时报错:Archive required for library “xxx” cannot be read or is not a valid zip file 网上查 ...