`

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

 
阅读更多

转:http://chain.blog.163.com/blog/static/140848523201171623521235/

软件包 java.lang.management

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

 

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

 

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. }  

 

输出:

 

Java代码  收藏代码
  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_API1.6文档(中文)

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    [Java参考文档].JDK_API 1.6

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和...

    Java获取计算机CPU、内存等信息

    首先,让我们了解一下Java中的`java.lang.management`包,这个包提供了管理和监视Java虚拟机以及操作系统的一些类和接口。通过`OperatingSystemMXBean`接口,我们可以获取到关于操作系统的各种信息,包括CPU使用率。...

    API规范JAVA.pdf

    17、虚拟机管理:java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 * java.lang.management 是 Java 2 Platform 的一部分,提供了管理接口,用于监视和管理 ...

    Java编写的windows任务管理器

    此外,为了模拟Windows任务管理器的资源监视功能,开发者可能还需要使用到`java.lang.management.MemoryMXBean`和`java.lang.management.ThreadMXBean`,这些接口可以获取内存使用统计和线程信息,帮助用户理解系统...

    java 查看JVM中所有的线程的活动状况

    首先,Java提供了`java.lang.management.ThreadMXBean`接口,它是管理JVM线程的管理接口。通过这个接口,我们可以获取线程的各种信息,包括线程ID、线程名称、线程状态等。线程状态主要有以下几种: 1. 新建(NEW)...

    Java 1.6 API 中文 New

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和...

    java 监视内存的使用情况

    对于程序内部的内存监控,Java提供了`java.lang.Runtime`类和`java.lang.management.MemoryMXBean`接口。`Runtime`类允许获取关于当前Java虚拟机的全局信息,如总内存、空闲内存等。而`MemoryMXBean`则提供了更深入...

    JDK_API_1_6_zh_CN_downcc.com.zip 良心一级分

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    1_6_zh_CN.CHM

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    java jdk-api-1.6 中文 chmd

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    JavaAPI1.6中文chm文档 part1

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    java api最新7.0

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和...

    java监控linux cpu使用率

    更常见的是使用Java的`java.lang.management`包,该包提供了管理和监视Java虚拟机(JVM)以及操作系统的工具。 具体来说,可以使用`OperatingSystemMXBean`接口,它是`ManagementFactory.getOperatingSystemMXBean...

    JavaAPI中文chm文档 part2

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    [Java参考文档]

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    Java SE 6 中监视和诊断性能问题1

    这些增强主要体现在Java监控和管理API(Management API)的扩展、图形化工具JConsole的正式支持,以及Java虚拟机(JVM)测试工具的升级。 首先,Java SE 5 的`java.lang.management`包通过定义9个MXBeans(管理扩展...

Global site tag (gtag.js) - Google Analytics