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("\t初始(M):"+headMemory.getInit()/MB);  
  177.         System.out.println("\t最大(上限)(M):"+headMemory.getMax()/MB);  
  178.         System.out.println("\t當前(已使用)(M):"+headMemory.getUsed()/MB);  
  179.         System.out.println("\t提交的內存(已申請)(M):"+headMemory.getCommitted()/MB);  
  180.         System.out.println("\t使用率:"+headMemory.getUsed()*100/headMemory.getCommitted()+"%");  
  181.           
  182.         System.out.println("non-head非堆:");  
  183.         MemoryUsage nonheadMemory = memory.getNonHeapMemoryUsage();  
  184.         System.out.println("\t初始(M):"+nonheadMemory.getInit()/MB);  
  185.         System.out.println("\t最大(上限)(M):"+nonheadMemory.getMax()/MB);  
  186.         System.out.println("\t當前(已使用)(M):"+nonheadMemory.getUsed()/MB);  
  187.         System.out.println("\t提交的內存(已申請)(M):"+nonheadMemory.getCommitted()/MB);  
  188.         System.out.println("\t使用率:"+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內存區:\n\t名稱="+pool.getName()+"\n\t所屬內存管理者="+Arrays.deepToString(pool.getMemoryManagerNames())  
  198.                         +"\n\t ObjectName="+pool.getObjectName()+"\n\t初始大小(M)="+pool.getUsage().getInit()/MB  
  199.                         +"\n\t最大(上限)(M)="+pool.getUsage().getMax()/MB  
  200.                         +"\n\t已用大小(M)="+pool.getUsage().getUsed()/MB  
  201.                         +"\n\t已提交(已申請)(M)="+pool.getUsage().getCommitted()/MB  
  202.                         +"\n\t使用率="+(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("\t\t線程名稱\t\t狀態\t\t");  
  222.             for(ThreadInfo deadlockInfo : deadlockInfos){  
  223.                 System.out.println("\t\t"+deadlockInfo.getThreadName()+"\t\t"+deadlockInfo.getThreadState()  
  224.                         +"\t\t"+deadlockInfo.getBlockedTime()+"\t\t"+deadlockInfo.getWaitedTime()  
  225.                         +"\t\t"+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("\t\t線程名稱\t\t\t\t\t狀態\t\t\t\t\t線程id");  
  233.             for(ThreadInfo threadInfo : threadInfos){  
  234.                 System.out.println("\t\t"+threadInfo.getThreadName()+"\t\t\t\t\t"+threadInfo.getThreadState()  
  235.                         +"\t\t\t\t\t"+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:\test2\test200, sun.cpu.isalist=amd64, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, sun.os.patch.level=Service Pack 1, java.io.tmpdir=C:\Users\WEIJIA~1\AppData\Local\Temp\, user.home=E:\USER\weijianfei, 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:\test2\test200\target\classes;E:\setup\maven\org\apache\zookeeper\zookeeper\3.4.6\zookeeper-3.4.6.jar;E:\setup\maven\org\slf4j\slf4j-api\1.6.1\slf4j-api-1.6.1.jar;E:\setup\maven\org\slf4j\slf4j-log4j12\1.6.1\slf4j-log4j12-1.6.1.jar;E:\setup\maven\log4j\log4j\1.2.16\log4j-1.2.16.jar;E:\setup\maven\jline\jline\0.9.94\jline-0.9.94.jar;E:\setup\maven\junit\junit\3.8.1\junit-3.8.1.jar;E:\setup\maven\io\netty\netty\3.7.0.Final\netty-3.7.0.Final.jar;E:\setup\maven\org\springframework\spring-webmvc\4.2.1.RELEASE\spring-webmvc-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-beans\4.2.1.RELEASE\spring-beans-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-context\4.2.1.RELEASE\spring-context-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-aop\4.2.1.RELEASE\spring-aop-4.2.1.RELEASE.jar;E:\setup\maven\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;E:\setup\maven\org\springframework\spring-core\4.2.1.RELEASE\spring-core-4.2.1.RELEASE.jar;E:\setup\maven\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;E:\setup\maven\org\springframework\spring-expression\4.2.1.RELEASE\spring-expression-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-web\4.2.1.RELEASE\spring-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.7\lib\resources.jar;D:\jre1.7\lib\rt.jar;D:\jre1.7\lib\sunrsasign.jar;D:\jre1.7\lib\jsse.jar;D:\jre1.7\lib\jce.jar;D:\jre1.7\lib\charsets.jar;D:\jre1.7\lib\jfr.jar;D:\jre1.7\classes, sun.desktop=windows, sun.cpu.endian=little, awt.toolkit=sun.awt.windows.WToolkit, sun.boot.library.path=D:\jre1.7\bin, java.vm.name=Java HotSpot(TM) 64-Bit Server VM, java.home=D:\jre1.7, java.endorsed.dirs=D:\jre1.7\lib\endorsed, sun.management.compiler=HotSpot 64-Bit Tiered Compilers, java.runtime.name=Java(TM) SE Runtime Environment, java.library.path=D:\jre1.7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.6.0_45\bin;C:\Program Files\Java\jdk1.6.0_45\jre\bin;D:\soft\svn1.8\bin;D:\apache-maven-3.2.3\bin;D:\mysql5.7\MySQL Server 5.7\bin;D:\mysql5.7\MySQL 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.7\lib\ext;C:\Windows\Sun\Java\lib\ext, 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:\test2\test200\target\classes;E:\setup\maven\org\apache\zookeeper\zookeeper\3.4.6\zookeeper-3.4.6.jar;E:\setup\maven\org\slf4j\slf4j-api\1.6.1\slf4j-api-1.6.1.jar;E:\setup\maven\org\slf4j\slf4j-log4j12\1.6.1\slf4j-log4j12-1.6.1.jar;E:\setup\maven\log4j\log4j\1.2.16\log4j-1.2.16.jar;E:\setup\maven\jline\jline\0.9.94\jline-0.9.94.jar;E:\setup\maven\junit\junit\3.8.1\junit-3.8.1.jar;E:\setup\maven\io\netty\netty\3.7.0.Final\netty-3.7.0.Final.jar;E:\setup\maven\org\springframework\spring-webmvc\4.2.1.RELEASE\spring-webmvc-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-beans\4.2.1.RELEASE\spring-beans-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-context\4.2.1.RELEASE\spring-context-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-aop\4.2.1.RELEASE\spring-aop-4.2.1.RELEASE.jar;E:\setup\maven\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;E:\setup\maven\org\springframework\spring-core\4.2.1.RELEASE\spring-core-4.2.1.RELEASE.jar;E:\setup\maven\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;E:\setup\maven\org\springframework\spring-expression\4.2.1.RELEASE\spring-expression-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-web\4.2.1.RELEASE\spring-web-4.2.1.RELEASE.jar  
    34. 引導類路徑:D:\jre1.7\lib\resources.jar;D:\jre1.7\lib\rt.jar;D:\jre1.7\lib\sunrsasign.jar;D:\jre1.7\lib\jsse.jar;D:\jre1.7\lib\jce.jar;D:\jre1.7\lib\charsets.jar;D:\jre1.7\lib\jfr.jar;D:\jre1.7\classes  
    35. 庫路徑:D:\jre1.7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.6.0_45\bin;C:\Program Files\Java\jdk1.6.0_45\jre\bin;D:\soft\svn1.8\bin;D:\apache-maven-3.2.3\bin;D:\mysql5.7\MySQL Server 5.7\bin;D:\mysql5.7\MySQL 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  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM