zoukankan      html  css  js  c++  java
  • java 利用ManagementFactory获取jvm,os的一些信息--转

    原文地址:http://blog.csdn.net/dream_broken/article/details/49759043

    想了解下某个Java项目的运行时jvm的情况,可以使用一些监控工具,比如jdk的bin下就提供了很多工具。

       

    比如,本地运行一个程序,让它死循环

    [java] view plain copy
     
    1. while(true){  
    2.             try {  
    3.                 Thread.sleep(10*1000);  
    4.             } catch (Exception e) {  
    5.                   
    6.             }  
    7.         }  


        然后,点击启动jconsole.exe

    可以发现,jconsole.exe可以连接本地,也可以连接远程,我们选择本地的中的刚刚上面执行的那个类

    我们发现,居然可以监控到这么多信息,那如果我们自己写代码,能否获取到这些信息呢,点击MBean。

    java.lang下,看名称就知道是什么了,再点击某一个,会看到一些类信息,也就是说,我们是有可能自己写代码也能获取到jvm信息的。

        下面就记录下例子代码。

    [java] view plain copy
     
    1. package com.fei;  
    2.   
    3. import java.lang.management.ClassLoadingMXBean;  
    4. import java.lang.management.CompilationMXBean;  
    5. import java.lang.management.GarbageCollectorMXBean;  
    6. import java.lang.management.ManagementFactory;  
    7. import java.lang.management.MemoryMXBean;  
    8. import java.lang.management.MemoryManagerMXBean;  
    9. import java.lang.management.MemoryPoolMXBean;  
    10. import java.lang.management.MemoryUsage;  
    11. import java.lang.management.OperatingSystemMXBean;  
    12. import java.lang.management.RuntimeMXBean;  
    13. import java.lang.management.ThreadInfo;  
    14. import java.lang.management.ThreadMXBean;  
    15. import java.lang.reflect.InvocationTargetException;  
    16. import java.lang.reflect.Method;  
    17. import java.util.Arrays;  
    18. import java.util.List;  
    19.   
    20. public class JvmInfo {  
    21.   
    22.     static final long MB = 1024 * 1024;  
    23.       
    24.     public static void main(String[] args) {  
    25.           
    26.                   
    27.         //打印系统信息  
    28.         System.out.println("===========打印系统信息==========");  
    29.         printOperatingSystemInfo();  
    30.         //打印编译信息  
    31.         System.out.println("===========打印编译信息==========");  
    32.         printCompilationInfo();  
    33.         //打印类加载信息  
    34.         System.out.println("===========打印类加载信息==========");  
    35.         printClassLoadingInfo();  
    36.         //打印运行时信息  
    37.         System.out.println("===========打印运行时信息==========");  
    38.         printRuntimeInfo();  
    39.         //打印内存管理器信息  
    40.         System.out.println("===========打印内存管理器信息==========");  
    41.         printMemoryManagerInfo();  
    42.         //打印垃圾回收信息  
    43.         System.out.println("===========打印垃圾回收信息==========");  
    44.         printGarbageCollectorInfo();  
    45.         //打印vm内存  
    46.         System.out.println("===========打印vm内存信息==========");  
    47.         printMemoryInfo();  
    48.         //打印vm各内存区信息  
    49.         System.out.println("===========打印vm各内存区信息==========");  
    50.         printMemoryPoolInfo();  
    51.         //打印线程信息  
    52.         System.out.println("===========打印线程==========");  
    53.         printThreadInfo();  
    54.           
    55.     }  
    56.       
    57.       
    58.     private static void printOperatingSystemInfo(){  
    59.         OperatingSystemMXBean system = ManagementFactory.getOperatingSystemMXBean();  
    60.         //相当于System.getProperty("os.name").  
    61.         System.out.println("系统名称:"+system.getName());  
    62.         //相当于System.getProperty("os.version").  
    63.         System.out.println("系统版本:"+system.getVersion());  
    64.         //相当于System.getProperty("os.arch").  
    65.         System.out.println("操作系统的架构:"+system.getArch());  
    66.         //相当于 Runtime.availableProcessors()  
    67.         System.out.println("可用的内核数:"+system.getAvailableProcessors());  
    68.           
    69.         if(isSunOsMBean(system)){  
    70.             long totalPhysicalMemory = getLongFromOperatingSystem(system,"getTotalPhysicalMemorySize");  
    71.             long freePhysicalMemory = getLongFromOperatingSystem(system, "getFreePhysicalMemorySize");  
    72.             long usedPhysicalMemorySize =totalPhysicalMemory - freePhysicalMemory;  
    73.               
    74.             System.out.println("总物理内存(M):"+totalPhysicalMemory/MB);  
    75.             System.out.println("已用物理内存(M):"+usedPhysicalMemorySize/MB);  
    76.             System.out.println("剩余物理内存(M):"+freePhysicalMemory/MB);  
    77.               
    78.             long  totalSwapSpaceSize = getLongFromOperatingSystem(system, "getTotalSwapSpaceSize");  
    79.             long freeSwapSpaceSize = getLongFromOperatingSystem(system, "getFreeSwapSpaceSize");  
    80.             long usedSwapSpaceSize = totalSwapSpaceSize - freeSwapSpaceSize;  
    81.               
    82.             System.out.println("总交换空间(M):"+totalSwapSpaceSize/MB);  
    83.             System.out.println("已用交换空间(M):"+usedSwapSpaceSize/MB);  
    84.             System.out.println("剩余交换空间(M):"+freeSwapSpaceSize/MB);  
    85.         }  
    86.     }  
    87.       
    88.     private static long getLongFromOperatingSystem(OperatingSystemMXBean operatingSystem, String methodName) {  
    89.         try {  
    90.             final Method method = operatingSystem.getClass().getMethod(methodName,  
    91.                     (Class<?>[]) null);  
    92.             method.setAccessible(true);  
    93.             return (Long) method.invoke(operatingSystem, (Object[]) null);  
    94.         } catch (final InvocationTargetException e) {  
    95.             if (e.getCause() instanceof Error) {  
    96.                 throw (Error) e.getCause();  
    97.             } else if (e.getCause() instanceof RuntimeException) {  
    98.                 throw (RuntimeException) e.getCause();  
    99.             }  
    100.             throw new IllegalStateException(e.getCause());  
    101.         } catch (final NoSuchMethodException e) {  
    102.             throw new IllegalArgumentException(e);  
    103.         } catch (final IllegalAccessException e) {  
    104.             throw new IllegalStateException(e);  
    105.         }  
    106.     }  
    107.   
    108.     private static void printCompilationInfo(){  
    109.         CompilationMXBean compilation = ManagementFactory.getCompilationMXBean();  
    110.         System.out.println("JIT编译器名称:"+compilation.getName());  
    111.         //判断jvm是否支持编译时间的监控  
    112.         if(compilation.isCompilationTimeMonitoringSupported()){  
    113.             System.out.println("总编译时间:"+compilation.getTotalCompilationTime()+"秒");  
    114.         }  
    115.     }  
    116.       
    117.     private static void printClassLoadingInfo(){  
    118.         ClassLoadingMXBean classLoad= ManagementFactory.getClassLoadingMXBean();  
    119.         System.out.println("已加载类总数:"+classLoad.getTotalLoadedClassCount());  
    120.         System.out.println("已加载当前类:"+classLoad.getLoadedClassCount());  
    121.         System.out.println("已卸载类总数:"+classLoad.getUnloadedClassCount());  
    122.           
    123.     }  
    124.       
    125.     private static void printRuntimeInfo(){  
    126.         RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();  
    127.         System.out.println("进程PID="+runtime.getName().split("@")[0]);  
    128.         System.out.println("jvm规范名称:"+runtime.getSpecName());  
    129.         System.out.println("jvm规范运营商:"+runtime.getSpecVendor());  
    130.         System.out.println("jvm规范版本:"+runtime.getSpecVersion());  
    131.         //返回虚拟机在毫秒内的开始时间。该方法返回了虚拟机启动时的近似时间  
    132.         System.out.println("jvm启动时间(毫秒):"+runtime.getStartTime());  
    133.         //相当于System.getProperties  
    134.         System.out.println("获取System.properties:"+runtime.getSystemProperties());  
    135.         System.out.println("jvm正常运行时间(毫秒):"+runtime.getUptime());  
    136.         //相当于System.getProperty("java.vm.name").  
    137.         System.out.println("jvm名称:"+runtime.getVmName());  
    138.         //相当于System.getProperty("java.vm.vendor").  
    139.         System.out.println("jvm运营商:"+runtime.getVmVendor());  
    140.         //相当于System.getProperty("java.vm.version").  
    141.         System.out.println("jvm实现版本:"+runtime.getVmVersion());  
    142.         List<String> args = runtime.getInputArguments();  
    143.         if(args != null && !args.isEmpty()){  
    144.             System.out.println("vm参数:");  
    145.             for(String arg : args){  
    146.                 System.out.println(arg);  
    147.             }  
    148.         }  
    149.         System.out.println("类路径:"+runtime.getClassPath());  
    150.         System.out.println("引导类路径:"+runtime.getBootClassPath());  
    151.         System.out.println("库路径:"+runtime.getLibraryPath());  
    152.     }  
    153.       
    154.     private static void printMemoryManagerInfo(){  
    155.         List<MemoryManagerMXBean> managers = ManagementFactory.getMemoryManagerMXBeans();  
    156.         if(managers != null && !managers.isEmpty()){  
    157.             for(MemoryManagerMXBean manager : managers){  
    158.                 System.out.println("vm内存管理器:名称="+manager.getName()+",管理的内存区="  
    159.             +Arrays.deepToString(manager.getMemoryPoolNames())+",ObjectName="+manager.getObjectName());  
    160.             }  
    161.         }  
    162.     }  
    163.       
    164.     private static void printGarbageCollectorInfo(){  
    165.         List<GarbageCollectorMXBean> garbages = ManagementFactory.getGarbageCollectorMXBeans();  
    166.         for(GarbageCollectorMXBean garbage : garbages){  
    167.             System.out.println("垃圾收集器:名称="+garbage.getName()+",收集="+garbage.getCollectionCount()+",总花费时间="  
    168.         +garbage.getCollectionTime()+",内存区名称="+Arrays.deepToString(garbage.getMemoryPoolNames()));  
    169.         }  
    170.     }  
    171.       
    172.     private static void printMemoryInfo(){  
    173.         MemoryMXBean memory = ManagementFactory.getMemoryMXBean();  
    174.         MemoryUsage headMemory = memory.getHeapMemoryUsage();  
    175.         System.out.println("head堆:");  
    176.         System.out.println(" 初始(M):"+headMemory.getInit()/MB);  
    177.         System.out.println(" 最大(上限)(M):"+headMemory.getMax()/MB);  
    178.         System.out.println(" 当前(已使用)(M):"+headMemory.getUsed()/MB);  
    179.         System.out.println(" 提交的内存(已申请)(M):"+headMemory.getCommitted()/MB);  
    180.         System.out.println(" 使用率:"+headMemory.getUsed()*100/headMemory.getCommitted()+"%");  
    181.           
    182.         System.out.println("non-head非堆:");  
    183.         MemoryUsage nonheadMemory = memory.getNonHeapMemoryUsage();  
    184.         System.out.println(" 初始(M):"+nonheadMemory.getInit()/MB);  
    185.         System.out.println(" 最大(上限)(M):"+nonheadMemory.getMax()/MB);  
    186.         System.out.println(" 当前(已使用)(M):"+nonheadMemory.getUsed()/MB);  
    187.         System.out.println(" 提交的内存(已申请)(M):"+nonheadMemory.getCommitted()/MB);  
    188.         System.out.println(" 使用率:"+nonheadMemory.getUsed()*100/nonheadMemory.getCommitted()+"%");  
    189.     }  
    190.       
    191.     private static void printMemoryPoolInfo(){  
    192.         List<MemoryPoolMXBean> pools = ManagementFactory.getMemoryPoolMXBeans();  
    193.         if(pools != null && !pools.isEmpty()){  
    194.             for(MemoryPoolMXBean pool : pools){  
    195.                 //只打印一些各个内存区都有的属性,一些区的特殊属性,可看文档或百度  
    196.                 //最大值,初始值,如果没有定义的话,返回-1,所以真正使用时,要注意  
    197.                 System.out.println("vm内存区: 名称="+pool.getName()+" 所属内存管理者="+Arrays.deepToString(pool.getMemoryManagerNames())  
    198.                         +"  ObjectName="+pool.getObjectName()+" 初始大小(M)="+pool.getUsage().getInit()/MB  
    199.                         +" 最大(上限)(M)="+pool.getUsage().getMax()/MB  
    200.                         +" 已用大小(M)="+pool.getUsage().getUsed()/MB  
    201.                         +" 已提交(已申请)(M)="+pool.getUsage().getCommitted()/MB  
    202.                         +" 使用率="+(pool.getUsage().getUsed()*100/pool.getUsage().getCommitted())+"%");  
    203.               
    204.             }  
    205.         }  
    206.     }  
    207.       
    208.     private static void printThreadInfo(){  
    209.         ThreadMXBean thread = ManagementFactory.getThreadMXBean();  
    210.         System.out.println("ObjectName="+thread.getObjectName());  
    211.         System.out.println("仍活动的线程总数="+thread.getThreadCount());  
    212.         System.out.println("峰值="+thread.getPeakThreadCount());  
    213.         System.out.println("线程总数(被创建并执行过的线程总数)="+thread.getTotalStartedThreadCount());  
    214.         System.out.println("当初仍活动的守护线程(daemonThread)总数="+thread.getDaemonThreadCount());  
    215.           
    216.         //检查是否有死锁的线程存在  
    217.         long[] deadlockedIds =  thread.findDeadlockedThreads();  
    218.         if(deadlockedIds != null && deadlockedIds.length > 0){  
    219.             ThreadInfo[] deadlockInfos = thread.getThreadInfo(deadlockedIds);  
    220.             System.out.println("死锁线程信息:");  
    221.             System.out.println(" 线程名称 状态 ");  
    222.             for(ThreadInfo deadlockInfo : deadlockInfos){  
    223.                 System.out.println(" "+deadlockInfo.getThreadName()+" "+deadlockInfo.getThreadState()  
    224.                         +" "+deadlockInfo.getBlockedTime()+" "+deadlockInfo.getWaitedTime()  
    225.                         +" "+deadlockInfo.getStackTrace().toString());  
    226.             }  
    227.         }  
    228.         long[] threadIds = thread.getAllThreadIds();  
    229.         if(threadIds != null && threadIds.length > 0){  
    230.             ThreadInfo[] threadInfos = thread.getThreadInfo(threadIds);  
    231.             System.out.println("所有线程信息:");  
    232.             System.out.println(" 线程名称 状态 线程id");  
    233.             for(ThreadInfo threadInfo : threadInfos){  
    234.                 System.out.println(" "+threadInfo.getThreadName()+" "+threadInfo.getThreadState()  
    235.                         +" "+threadInfo.getThreadId());  
    236.             }  
    237.         }  
    238.           
    239.     }  
    240.       
    241.     private static boolean isSunOsMBean(OperatingSystemMXBean operatingSystem) {  
    242.         final String className = operatingSystem.getClass().getName();  
    243.         return "com.sun.management.OperatingSystem".equals(className)  
    244.                 || "com.sun.management.UnixOperatingSystem".equals(className);  
    245.     }  
    246. }  
    [plain] view plain copy
     
      1. ===========打印系统信息==========  
      2. 系统名称:Windows 7  
      3. 系统版本:6.1  
      4. 操作系统的架构:amd64  
      5. 可用的内核数:4  
      6. 总物理内存(M):6041  
      7. 已用物理内存(M):5387  
      8. 剩余物理内存(M):653  
      9. 总交换空间(M):18136  
      10. 已用交换空间(M):15817  
      11. 剩余交换空间(M):2319  
      12. ===========打印编译信息==========  
      13. JIT编译器名称:HotSpot 64-Bit Tiered Compilers  
      14. 总编译时间:0秒  
      15. ===========打印类加载信息==========  
      16. 已加载类总数:410  
      17. 已加载当前类:410  
      18. 已卸载类总数:0  
      19. ===========打印运行时信息==========  
      20. 进程PID=386220  
      21. jvm规范名称:Java Virtual Machine Specification  
      22. jvm规范运营商:Oracle Corporation  
      23. jvm规范版本:1.7  
      24. jvm启动时间(毫秒):1447134405258  
      25. 获取System.properties:{java.vm.version=24.80-b11, sun.jnu.encoding=GBK, java.vendor.url=http://java.oracle.com/, java.vm.info=mixed mode, user.dir=E: est2 est200, sun.cpu.isalist=amd64, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, sun.os.patch.level=Service Pack 1, java.io.tmpdir=C:UsersWEIJIA~1AppDataLocalTemp\, user.home=E:USERweijianfei, java.awt.printerjob=sun.awt.windows.WPrinterJob, java.version=1.7.0_80, file.encoding.pkg=sun.io, java.vendor.url.bug=http://bugreport.sun.com/bugreport/, file.encoding=UTF-8, line.separator=  
      26. , sun.java.command=com.fei.JvmInfo, java.vm.specification.vendor=Oracle Corporation, java.vm.vendor=Oracle Corporation, java.class.path=E: est2 est200 argetclasses;E:setupmavenorgapachezookeeperzookeeper3.4.6zookeeper-3.4.6.jar;E:setupmavenorgslf4jslf4j-api1.6.1slf4j-api-1.6.1.jar;E:setupmavenorgslf4jslf4j-log4j121.6.1slf4j-log4j12-1.6.1.jar;E:setupmavenlog4jlog4j1.2.16log4j-1.2.16.jar;E:setupmavenjlinejline.9.94jline-0.9.94.jar;E:setupmavenjunitjunit3.8.1junit-3.8.1.jar;E:setupmavenio etty etty3.7.0.Final etty-3.7.0.Final.jar;E:setupmavenorgspringframeworkspring-webmvc4.2.1.RELEASEspring-webmvc-4.2.1.RELEASE.jar;E:setupmavenorgspringframeworkspring-beans4.2.1.RELEASEspring-beans-4.2.1.RELEASE.jar;E:setupmavenorgspringframeworkspring-context4.2.1.RELEASEspring-context-4.2.1.RELEASE.jar;E:setupmavenorgspringframeworkspring-aop4.2.1.RELEASEspring-aop-4.2.1.RELEASE.jar;E:setupmavenaopallianceaopalliance1.0aopalliance-1.0.jar;E:setupmavenorgspringframeworkspring-core4.2.1.RELEASEspring-core-4.2.1.RELEASE.jar;E:setupmavencommons-loggingcommons-logging1.2commons-logging-1.2.jar;E:setupmavenorgspringframeworkspring-expression4.2.1.RELEASEspring-expression-4.2.1.RELEASE.jar;E:setupmavenorgspringframeworkspring-web4.2.1.RELEASEspring-web-4.2.1.RELEASE.jar, sun.io.unicode.encoding=UnicodeLittle, user.variant=, os.arch=amd64, user.name=weijianfei, user.language=zh, java.runtime.version=1.7.0_80-b15, sun.boot.class.path=D:jre1.7lib esources.jar;D:jre1.7lib t.jar;D:jre1.7libsunrsasign.jar;D:jre1.7libjsse.jar;D:jre1.7libjce.jar;D:jre1.7libcharsets.jar;D:jre1.7libjfr.jar;D:jre1.7classes, sun.desktop=windows, sun.cpu.endian=little, awt.toolkit=sun.awt.windows.WToolkit, sun.boot.library.path=D:jre1.7in, java.vm.name=Java HotSpot(TM) 64-Bit Server VM, java.home=D:jre1.7, java.endorsed.dirs=D:jre1.7libendorsed, sun.management.compiler=HotSpot 64-Bit Tiered Compilers, java.runtime.name=Java(TM) SE Runtime Environment, java.library.path=D:jre1.7in;C:WindowsSunJavain;C:Windowssystem32;C:Windows;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program FilesJavajdk1.6.0_45in;C:Program FilesJavajdk1.6.0_45jrein;D:softsvn1.8in;D:apache-maven-3.2.3in;D:mysql5.7MySQL Server 5.7in;D:mysql5.7MySQL Utilities 1.3.5;D:mongoDB;., file.separator=\, java.specification.vendor=Oracle Corporation, java.vm.specification.version=1.7, sun.java.launcher=SUN_STANDARD, user.timezone=, os.name=Windows 7, path.separator=;, java.ext.dirs=D:jre1.7libext;C:WindowsSunJavalibext, sun.arch.data.model=64, java.specification.name=Java Platform API Specification, os.version=6.1, user.script=, user.country=CN, java.class.version=51.0, java.vendor=Oracle Corporation, java.vm.specification.name=Java Virtual Machine Specification, java.specification.version=1.7}  
      27. jvm正常运行时间(毫秒):573  
      28. jvm名称:Java HotSpot(TM) 64-Bit Server VM  
      29. jvm运营商:Oracle Corporation  
      30. jvm实现版本:24.80-b11  
      31. vm参数:  
      32. -Dfile.encoding=UTF-8  
      33. 类路径:E: est2 est200 argetclasses;E:setupmavenorgapachezookeeperzookeeper3.4.6zookeeper-3.4.6.jar;E:setupmavenorgslf4jslf4j-api1.6.1slf4j-api-1.6.1.jar;E:setupmavenorgslf4jslf4j-log4j121.6.1slf4j-log4j12-1.6.1.jar;E:setupmavenlog4jlog4j1.2.16log4j-1.2.16.jar;E:setupmavenjlinejline.9.94jline-0.9.94.jar;E:setupmavenjunitjunit3.8.1junit-3.8.1.jar;E:setupmavenio etty etty3.7.0.Final etty-3.7.0.Final.jar;E:setupmavenorgspringframeworkspring-webmvc4.2.1.RELEASEspring-webmvc-4.2.1.RELEASE.jar;E:setupmavenorgspringframeworkspring-beans4.2.1.RELEASEspring-beans-4.2.1.RELEASE.jar;E:setupmavenorgspringframeworkspring-context4.2.1.RELEASEspring-context-4.2.1.RELEASE.jar;E:setupmavenorgspringframeworkspring-aop4.2.1.RELEASEspring-aop-4.2.1.RELEASE.jar;E:setupmavenaopallianceaopalliance1.0aopalliance-1.0.jar;E:setupmavenorgspringframeworkspring-core4.2.1.RELEASEspring-core-4.2.1.RELEASE.jar;E:setupmavencommons-loggingcommons-logging1.2commons-logging-1.2.jar;E:setupmavenorgspringframeworkspring-expression4.2.1.RELEASEspring-expression-4.2.1.RELEASE.jar;E:setupmavenorgspringframeworkspring-web4.2.1.RELEASEspring-web-4.2.1.RELEASE.jar  
      34. 引导类路径:D:jre1.7lib esources.jar;D:jre1.7lib t.jar;D:jre1.7libsunrsasign.jar;D:jre1.7libjsse.jar;D:jre1.7libjce.jar;D:jre1.7libcharsets.jar;D:jre1.7libjfr.jar;D:jre1.7classes  
      35. 库路径:D:jre1.7in;C:WindowsSunJavain;C:Windowssystem32;C:Windows;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program FilesJavajdk1.6.0_45in;C:Program FilesJavajdk1.6.0_45jrein;D:softsvn1.8in;D:apache-maven-3.2.3in;D:mysql5.7MySQL Server 5.7in;D:mysql5.7MySQL Utilities 1.3.5;D:mongoDB;.  
      36. ===========打印内存管理器信息==========  
      37. vm内存管理器:名称=CodeCacheManager,管理的内存区=[Code Cache],ObjectName=java.lang:type=MemoryManager,name=CodeCacheManager  
      38. vm内存管理器:名称=PS Scavenge,管理的内存区=[PS Eden Space, PS Survivor Space],ObjectName=java.lang:type=GarbageCollector,name=PS Scavenge  
      39. vm内存管理器:名称=PS MarkSweep,管理的内存区=[PS Eden Space, PS Survivor Space, PS Old Gen, PS Perm Gen],ObjectName=java.lang:type=GarbageCollector,name=PS MarkSweep  
      40. ===========打印垃圾回收信息==========  
      41. 垃圾收集器:名称=PS Scavenge,收集=0,总花费时间=0,内存区名称=[PS Eden Space, PS Survivor Space]  
      42. 垃圾收集器:名称=PS MarkSweep,收集=0,总花费时间=0,内存区名称=[PS Eden Space, PS Survivor Space, PS Old Gen, PS Perm Gen]  
      43. ===========打印vm内存信息==========  
      44. head堆:  
      45.     初始(M):94  
      46.     最大(上限)(M):1344  
      47.     当前(已使用)(M):1  
      48.     提交的内存(已申请)(M):91  
      49.     使用率:1%  
      50. non-head非堆:  
      51.     初始(M):23  
      52.     最大(上限)(M):130  
      53.     当前(已使用)(M):3  
      54.     提交的内存(已申请)(M):23  
      55.     使用率:13%  
      56. ===========打印vm各内存区信息==========  
      57. vm内存区:  
      58.     名称=Code Cache  
      59.     所属内存管理者=[CodeCacheManager]  
      60.      ObjectName=java.lang:type=MemoryPool,name=Code Cache  
      61.     初始大小(M)=2  
      62.     最大(上限)(M)=48  
      63.     已用大小(M)=0  
      64.     已提交(已申请)(M)=2  
      65.     使用率=15%  
      66. vm内存区:  
      67.     名称=PS Eden Space  
      68.     所属内存管理者=[PS MarkSweep, PS Scavenge]  
      69.      ObjectName=java.lang:type=MemoryPool,name=PS Eden Space  
      70.     初始大小(M)=24  
      71.     最大(上限)(M)=497  
      72.     已用大小(M)=1  
      73.     已提交(已申请)(M)=24  
      74.     使用率=6%  
      75. vm内存区:  
      76.     名称=PS Survivor Space  
      77.     所属内存管理者=[PS MarkSweep, PS Scavenge]  
      78.      ObjectName=java.lang:type=MemoryPool,name=PS Survivor Space  
      79.     初始大小(M)=3  
      80.     最大(上限)(M)=3  
      81.     已用大小(M)=0  
      82.     已提交(已申请)(M)=3  
      83.     使用率=0%  
      84. vm内存区:  
      85.     名称=PS Old Gen  
      86.     所属内存管理者=[PS MarkSweep]  
      87.      ObjectName=java.lang:type=MemoryPool,name=PS Old Gen  
      88.     初始大小(M)=63  
      89.     最大(上限)(M)=1008  
      90.     已用大小(M)=0  
      91.     已提交(已申请)(M)=63  
      92.     使用率=0%  
      93. vm内存区:  
      94.     名称=PS Perm Gen  
      95.     所属内存管理者=[PS MarkSweep]  
      96.      ObjectName=java.lang:type=MemoryPool,name=PS Perm Gen  
      97.     初始大小(M)=21  
      98.     最大(上限)(M)=82  
      99.     已用大小(M)=2  
      100.     已提交(已申请)(M)=21  
      101.     使用率=13%  
      102. ===========打印线程==========  
      103. ObjectName=java.lang:type=Threading  
      104. 仍活动的线程总数=5  
      105. 峰值=5  
      106. 线程总数(被创建并执行过的线程总数)=5  
      107. 当初仍活动的守护线程(daemonThread)总数=4  
      108. 所有线程信息:  
      109.         线程名称                    状态                  线程id  
      110.         Attach Listener                 RUNNABLE                    5  
      111.         Signal Dispatcher                   RUNNABLE                    4  
      112.         Finalizer                   WAITING                 3  
      113.         Reference Handler                   WAITING                 2  
      114.         main                    RUNNABLE                    1  
  • 相关阅读:
    WF4.0 Beta1 自定义跟踪
    WF4.0 Beta1 流程设计器与Activity Designer
    新版本工作流平台的 (二) 权限算法(组织结构部分)
    WF4.0 Beta1 WorkflowInvoker
    WF4.0 基础篇 (十) Collection 集合操作
    WF4.0 基础篇 (十五) TransactionScope 事物容器
    WF4.0 基础篇 (六) 数据的传递 Arguments 参数
    WF4B1 的Procedural Activity 之InvokeMethod , InvokeMethod<T> 使用
    WF4.0 Beta1 异常处理
    WF4.0 Beta1 变量 Variables
  • 原文地址:https://www.cnblogs.com/davidwang456/p/6182453.html
Copyright © 2011-2022 走看看