原文地址:https://blog.csdn.net/zhongweijian/article/details/7619383

软件包 java.lang.management

提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。

接口摘要

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. import javax.management.MBeanServerConnection;

  14. public class MBeanDemo {

  15. public static void main(String[] args) {

  16. showJvmInfo();

  17. showMemoryInfo();

  18. showSystem();

  19. showClassLoading();

  20. showCompilation();

  21. showThread();

  22. showGarbageCollector();

  23. showMemoryManager();

  24. showMemoryPool();

  25. }

  26. /**

  27. * Java 虚拟机的运行时系统

  28. */

  29. public static void showJvmInfo() {

  30. RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean();

  31. String vendor = mxbean.getVmVendor();

  32. System.out.println("jvm name:" + mxbean.getVmName());

  33. System.out.println("jvm version:" + mxbean.getVmVersion());

  34. System.out.println("jvm bootClassPath:" + mxbean.getBootClassPath());

  35. System.out.println("jvm start time:" + mxbean.getStartTime());

  36. }

  37. /**

  38. * Java 虚拟机的内存系统

  39. */

  40. public static void showMemoryInfo() {

  41. MemoryMXBean mem = ManagementFactory.getMemoryMXBean();

  42. MemoryUsage heap = mem.getHeapMemoryUsage();

  43. System.out.println("Heap committed:" + heap.getCommitted() + " init:" + heap.getInit() + " max:"

  44. + heap.getMax() + " used:" + heap.getUsed());

  45. }

  46. /**

  47. * Java 虚拟机在其上运行的操作系统

  48. */

  49. public static void showSystem() {

  50. OperatingSystemMXBean op = ManagementFactory.getOperatingSystemMXBean();

  51. System.out.println("Architecture: " + op.getArch());

  52. System.out.println("Processors: " + op.getAvailableProcessors());

  53. System.out.println("System name: " + op.getName());

  54. System.out.println("System version: " + op.getVersion());

  55. System.out.println("Last minute load: " + op.getSystemLoadAverage());

  56. }

  57. /**

  58. * Java 虚拟机的类加载系统

  59. */

  60. public static void showClassLoading(){

  61. ClassLoadingMXBean cl = ManagementFactory.getClassLoadingMXBean();

  62. System.out.println("TotalLoadedClassCount: " + cl.getTotalLoadedClassCount());

  63. System.out.println("LoadedClassCount" + cl.getLoadedClassCount());

  64. System.out.println("UnloadedClassCount:" + cl.getUnloadedClassCount());

  65. }

  66. /**

  67. * Java 虚拟机的编译系统

  68. */

  69. public static void showCompilation(){

  70. CompilationMXBean com = ManagementFactory.getCompilationMXBean();

  71. System.out.println("TotalCompilationTime:" + com.getTotalCompilationTime());

  72. System.out.println("name:" + com.getName());

  73. }

  74. /**

  75. * Java 虚拟机的线程系统

  76. */

  77. public static void showThread(){

  78. ThreadMXBean thread = ManagementFactory.getThreadMXBean();

  79. System.out.println("ThreadCount" + thread.getThreadCount());

  80. System.out.println("AllThreadIds:" + thread.getAllThreadIds());

  81. System.out.println("CurrentThreadUserTime" + thread.getCurrentThreadUserTime());

  82. //......还有其他很多信息

  83. }

  84. /**

  85. * Java 虚拟机中的垃圾回收器。

  86. */

  87. public static void showGarbageCollector(){

  88. List<GarbageCollectorMXBean> gc = ManagementFactory.getGarbageCollectorMXBeans();

  89. for(GarbageCollectorMXBean GarbageCollectorMXBean : gc){

  90. System.out.println("name:" + GarbageCollectorMXBean.getName());

  91. System.out.println("CollectionCount:" + GarbageCollectorMXBean.getCollectionCount());

  92. System.out.println("CollectionTime" + GarbageCollectorMXBean.getCollectionTime());

  93. }

  94. }

  95. /**

  96. * Java 虚拟机中的内存管理器

  97. */

  98. public static void showMemoryManager(){

  99. List<MemoryManagerMXBean> mm = ManagementFactory.getMemoryManagerMXBeans();

  100. for(MemoryManagerMXBean eachmm: mm){

  101. System.out.println("name:" + eachmm.getName());

  102. System.out.println("MemoryPoolNames:" + eachmm.getMemoryPoolNames().toString());

  103. }

  104. }

  105. /**

  106. * Java 虚拟机中的内存池

  107. */

  108. public static void showMemoryPool(){

  109. List<MemoryPoolMXBean> mps = ManagementFactory.getMemoryPoolMXBeans();

  110. for(MemoryPoolMXBean mp : mps){

  111. System.out.println("name:" + mp.getName());

  112. System.out.println("CollectionUsage:" + mp.getCollectionUsage());

  113. System.out.println("type:" + mp.getType());

  114. }

  115. }

  116. /**

  117. * 访问 MXBean 的方法的三种方法

  118. */

  119. public static void visitMBean(){

  120. //第一种直接调用同一 Java 虚拟机内的 MXBean 中的方法。

  121. RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean();

  122. String vendor1 = mxbean.getVmVendor();

  123. System.out.println("vendor1:" + vendor1);

  124. //第二种通过一个连接到正在运行的虚拟机的平台 MBeanServer 的 MBeanServerConnection。

  125. MBeanServerConnection mbs = null;

  126. // Connect to a running JVM (or itself) and get MBeanServerConnection

  127. // that has the JVM MXBeans registered in it

  128. /*

  129. try {

  130. // Assuming the RuntimeMXBean has been registered in mbs

  131. ObjectName oname = new ObjectName(ManagementFactory.RUNTIME_MXBEAN_NAME);

  132. String vendor2 = (String) mbs.getAttribute(oname, "VmVendor");

  133. System.out.println("vendor2:" + vendor2);

  134. } catch (Exception e) {

  135. e.printStackTrace();

  136. }

  137. */

  138. //第三种使用 MXBean 代理

  139. // MBeanServerConnection mbs3 = null;

  140. // RuntimeMXBean proxy;

  141. // try {

  142. // proxy = ManagementFactory.newPlatformMXBeanProxy(mbs3,ManagementFactory.RUNTIME_MXBEAN_NAME,

  143. // RuntimeMXBean.class);

  144. // String vendor = proxy.getVmVendor();

  145. // } catch (IOException e) {

  146. // e.printStackTrace();

  147. // }

  148. }

  149. }

输出:

   
   
   

 
  1. jvm name:Java HotSpot(TM) Client VM

  2. jvm version:1.6.0-b105

  3. jvm bootClassPath:C:\Program Files\Java\jdk1.6.0\jre\lib\resources.jar;C:\Program Files\Java\jdk1.6.0\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.6.0\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.6.0\jre\lib\jce.jar;C:\Program Files\Java\jdk1.6.0\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.6.0\jre\classes

  4. jvm start time:1307440032774

  5. Heap committed:5177344 init:0 max:66650112 used:632640

  6. Architecture: x86

  7. Processors: 2

  8. System name: Windows XP

  9. System version: 5.1

  10. Last minute load: -1.0

  11. TotalLoadedClassCount: 381

  12. LoadedClassCount381

  13. UnloadedClassCount:0

  14. TotalCompilationTime:3

  15. name:HotSpot Client Compiler

  16. ThreadCount5

  17. AllThreadIds:[J@47b480

  18. CurrentThreadUserTime15625000

  19. name:Copy

  20. CollectionCount:0

  21. CollectionTime0

  22. name:MarkSweepCompact

  23. CollectionCount:0

  24. CollectionTime0

  25. name:CodeCacheManager

  26. MemoryPoolNames:[Ljava.lang.String;@1389e4

  27. name:Copy

  28. MemoryPoolNames:[Ljava.lang.String;@c20e24

  29. name:MarkSweepCompact

  30. MemoryPoolNames:[Ljava.lang.String;@2e7263

  31. name:Code Cache

  32. CollectionUsage:null

  33. type:Non-heap memory

  34. name:Eden Space

  35. CollectionUsage:init = 917504(896K) used = 0(0K) committed = 0(0K) max = 4194304(4096K)

  36. type:Heap memory

  37. name:Survivor Space

  38. CollectionUsage:init = 65536(64K) used = 0(0K) committed = 0(0K) max = 458752(448K)

  39. type:Heap memory

  40. name:Tenured Gen

  41. CollectionUsage:init = 4194304(4096K) used = 0(0K) committed = 0(0K) max = 61997056(60544K)

  42. type:Heap memory

  43. name:Perm Gen

  44. CollectionUsage:init = 12582912(12288K) used = 0(0K) committed = 0(0K) max = 67108864(65536K)

  45. type:Non-heap memory

  46. name:Perm Gen [shared-ro]

  47. CollectionUsage:init = 8388608(8192K) used = 0(0K) committed = 0(0K) max = 8388608(8192K)

  48. type:Non-heap memory

  49. name:Perm Gen [shared-rw]

  50. CollectionUsage:init = 12582912(12288K) used = 0(0K) committed = 0(0K) max = 12582912(12288K)

  51. type:Non-heap memory

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

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

    ClassLoadingMXBean 用于 Java 虚拟机的类加载系统的管理接口. CompilationMXBean 用于 Java 虚拟机的编译系统的管理接口. GarbageCollector ...

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

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

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

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

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

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

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

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

  6. 前台传参数时间类型不匹配:type 'java.lang.String' to required type 'java.util.Date' for property 'createDate'

    springMVC action接收参数: org.springframework.validation.BindException: org.springframework.validation.B ...

  7. Cannot convert value of type [java.lang.String] to required type [java.util.Date] for property 'xxx': no matching editors or conversion strategy found

    今天在完成项目的时候遇到了下面的异常信息: 04-Aug-2014 15:49:27.894 SEVERE [http-apr-8080-exec-5] org.apache.catalina.cor ...

  8. paip.自动import的实现跟java.lang.SecurityException Prohibited package name java

    paip.自动import的实现跟java.lang.SecurityException Prohibited package name java #-----自动import 因为java.lang ...

  9. Error: java.lang.UnsatisfiedLinkError: no ntvinv in java.library.path

    Error Message When compiling or executing a Java application that uses the ArcObjects Java API, the ...

随机推荐

  1. mysql left join 用法说明

    left join中关于where和on条件的几个知识点: 1.多表left join是会生成一张临时表,并返回给用户 2.where条件是针对最后生成的这张临时表进行过滤,过滤掉不符合where条件 ...

  2. 使用postman做接口测试----柠檬不萌!

    目录 一.GET和POST请求的区别 二.http协议 1.http请求分为两个部分 2.http状态码 三.使用postman测试HTTP接口 1.请求方式:get 2.请求方式:post 3.请求 ...

  3. Cocos2d-x之项目结构分析

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 1.下面是我们创建cocos2d的工程MyGame01里的文件资源 2. 在下面:文件解决方案下面有6个项目,我们的启动优先项为MyGam ...

  4. php学习笔记(初学者入门)

    <?php其他 isset() 变量是否存在 boolean empty() 检查变量是否存在,并判断值是否为非空或非0 void unset() 销毁变量 header('Content-Ty ...

  5. mysql 5.7.20 从frm文件中得到建表语句 (使用 mysql-utilities)

    系统环境  centos 7.2    mysql社区版 5.7.20 mysql-utilities 根据官网的说法,截止到2018年5月30日,实用工具的一些功能在Shell的路线图中,鼓励用户迁 ...

  6. python- 属性 静态方法,类方法

    一,面向对象结构与成员 1,1 面向对象结构分析: 那么每个大区域又可以分为多个小部分: class A: company_name = '老男孩教育' # 静态变量(静态字段) __iphone = ...

  7. 【linux】记录一下遇到的各种问题

    1. 解决办法: pthread不是Linux系统的默认库,编译时加上-lpthread参数,以调用链接库 gcc -o 文件名.out 文件名.c -lpthread 输出的时候直接 ./文件名.o ...

  8. neo4j APOC与自定义存储过程环境搭建

    neo4j APOC与自定义存储过程环境搭建 主要参考资料:APOC官网https://neo4j-contrib.github.io/neo4j-apoc-procedures/APOC介绍 PPT ...

  9. System.Web.Mvc 4.0.0.1 和 4.0.0.0 区别

    只是一个安全补丁的问题:  http://www.microsoft.com/zh-cn/download/details.aspx?id=44533&WT.mc_id=rss_alldown ...

  10. Vue.js文档学习

    Vue细碎小点 生命周期钩子:created().mounted().updated().destroyed() 不要在选项属性或回调上使用箭头函数,比如 created: () => cons ...