• 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  
  • 相关阅读:
    Hadoop配置文件参数详解
    Flume
    Oozie
    springmvc全局异常处理ControllerAdvice区分返回响应类型是页面还是JSON
    jsplumb 初识
    RabbitMQ 在Windows环境下安装
    Springboot2+SpringSecurity+Oauth2+Mysql数据库实现持久化客户端数据
    FastDFS与hadoop的HDFS区别
    springboot指定注解扫描范围
    Spring Boot2.0以上版本EmbeddedServletContainerCustomizer被WebServerFactoryCustomizer替代
  • 原文地址:https://www.cnblogs.com/davidwang456/p/6182453.html
Copyright © 2020-2023  润新知