在java代码中获取JVM参数(转)

近日关注性能调优,关注JMX,发现java.lang.management.*之强大。同时查阅了资料,整合一版关于JVM参数获取的note,仅供参考:

Java代码  收藏代码
  1.    
  2.     MemoryMXBean memorymbean = ManagementFactory.getMemoryMXBean();   
  3.     MemoryUsage usage = memorymbean.getHeapMemoryUsage();   
  4.     System.out.println("INIT HEAP: " + usage.getInit());   
  5.     System.out.println("MAX HEAP: " + usage.getMax());   
  6.     System.out.println("USE HEAP: " + usage.getUsed());   
  7.     System.out.println(" Full Information:");   
  8.     System.out.println("Heap Memory Usage: "   
  9.     + memorymbean.getHeapMemoryUsage());   
  10.     System.out.println("Non-Heap Memory Usage: "   
  11.     + memorymbean.getNonHeapMemoryUsage());   
  12.       
  13.     List<String> inputArguments = ManagementFactory.getRuntimeMXBean().getInputArguments();   
  14.     System.out.println("===================java options=============== ");  
  15.     System.out.println(inputArguments);  
  16.   
  17.       
  18.       
  19.     System.out.println("=======================通过java来获取相关系统状态============================ ");  
  20.     int i = (int)Runtime.getRuntime().totalMemory()/1024;//Java 虚拟机中的内存总量,以字节为单位  
  21.     System.out.println("总的内存量 i is "+i);  
  22.     int j = (int)Runtime.getRuntime().freeMemory()/1024;//Java 虚拟机中的空闲内存量  
  23.     System.out.println("空闲内存量 j is "+j);  
  24.     System.out.println("最大内存量 is "+Runtime.getRuntime().maxMemory()/1024);  
  25.   
  26.     System.out.println("=======================OperatingSystemMXBean============================ ");  
  27.     OperatingSystemMXBean osm = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();  
  28. //    System.out.println(osm.getFreeSwapSpaceSize()/1024);  
  29. //    System.out.println(osm.getFreePhysicalMemorySize()/1024);  
  30. //    System.out.println(osm.getTotalPhysicalMemorySize()/1024);  
  31.       
  32.     //获取操作系统相关信息  
  33.     System.out.println("osm.getArch() "+osm.getArch());  
  34.     System.out.println("osm.getAvailableProcessors() "+osm.getAvailableProcessors());  
  35.     //System.out.println("osm.getCommittedVirtualMemorySize() "+osm.getCommittedVirtualMemorySize());  
  36.     System.out.println("osm.getName() "+osm.getName());  
  37.     //System.out.println("osm.getProcessCpuTime() "+osm.getProcessCpuTime());  
  38.     System.out.println("osm.getVersion() "+osm.getVersion());  
  39.     //获取整个虚拟机内存使用情况  
  40.     System.out.println("=======================MemoryMXBean============================ ");  
  41.     MemoryMXBean mm=(MemoryMXBean)ManagementFactory.getMemoryMXBean();  
  42.     System.out.println("getHeapMemoryUsage "+mm.getHeapMemoryUsage());  
  43.     System.out.println("getNonHeapMemoryUsage "+mm.getNonHeapMemoryUsage());  
  44.     //获取各个线程的各种状态,CPU 占用情况,以及整个系统中的线程状况  
  45.     System.out.println("=======================ThreadMXBean============================ ");  
  46.     ThreadMXBean tm=(ThreadMXBean)ManagementFactory.getThreadMXBean();  
  47.     System.out.println("getThreadCount "+tm.getThreadCount());  
  48.     System.out.println("getPeakThreadCount "+tm.getPeakThreadCount());  
  49.     System.out.println("getCurrentThreadCpuTime "+tm.getCurrentThreadCpuTime());  
  50.     System.out.println("getDaemonThreadCount "+tm.getDaemonThreadCount());  
  51.     System.out.println("getCurrentThreadUserTime "+tm.getCurrentThreadUserTime());  
  52.       
  53.     //当前编译器情况  
  54.     System.out.println("=======================CompilationMXBean============================ ");  
  55.     CompilationMXBean gm=(CompilationMXBean)ManagementFactory.getCompilationMXBean();  
  56.     System.out.println("getName "+gm.getName());  
  57.     System.out.println("getTotalCompilationTime "+gm.getTotalCompilationTime());  
  58.       
  59.     //获取多个内存池的使用情况  
  60.     System.out.println("=======================MemoryPoolMXBean============================ ");  
  61.     List<MemoryPoolMXBean> mpmList=ManagementFactory.getMemoryPoolMXBeans();  
  62.     for(MemoryPoolMXBean mpm:mpmList){  
  63.         System.out.println("getUsage "+mpm.getUsage());  
  64.         System.out.println("getMemoryManagerNames "+mpm.getMemoryManagerNames().toString());  
  65.     }  
  66.     //获取GC的次数以及花费时间之类的信息  
  67.     System.out.println("=======================MemoryPoolMXBean============================ ");  
  68.     List<GarbageCollectorMXBean> gcmList=ManagementFactory.getGarbageCollectorMXBeans();  
  69.     for(GarbageCollectorMXBean gcm:gcmList){  
  70.         System.out.println("getName "+gcm.getName());  
  71.         System.out.println("getMemoryPoolNames "+gcm.getMemoryPoolNames());  
  72.     }  
  73.     //获取运行时信息  
  74.     System.out.println("=======================RuntimeMXBean============================ ");  
  75.     RuntimeMXBean rmb=(RuntimeMXBean)ManagementFactory.getRuntimeMXBean();  
  76.     System.out.println("getClassPath "+rmb.getClassPath());  
  77.     System.out.println("getLibraryPath "+rmb.getLibraryPath());  
  78.     System.out.println("getVmVersion "+rmb.getVmVersion());  
  79.       

运行结果如下:

Java代码  收藏代码
  1. INIT HEAP: 268435456  
  2. MAX HEAP: 1065484288  
  3. USE HEAP: 331632  
  4.   
  5. Full Information:  
  6. Heap Memory Usage: init = 268435456(262144K) used = 331632(323K) committed = 266403840(260160K) max = 1065484288(1040512K)  
  7. Non-Heap Memory Usage: init = 134381568(131232K) used = 2607888(2546K) committed = 134709248(131552K) max = 570425344(557056K)  
  8. ==========java options=====   
  9. [-Xms256m, -Xmx1024m, -XX:PermSize=128M, -XX:MaxPermSize=512m, -Dfile.encoding=UTF-8]  
  10. =======================通过java来获取相关系统状态============================   
  11. 总的内存量 i is 260160  
  12. 空闲内存量 j is 259836  
  13. 最大内存量 is 1040512  
  14. =======================OperatingSystemMXBean============================   
  15. osm.getArch() x86  
  16. osm.getAvailableProcessors() 2  
  17. osm.getName() Windows 7  
  18. osm.getVersion() 6.1  
  19. =======================MemoryMXBean============================   
  20. getHeapMemoryUsage init = 268435456(262144K) used = 331632(323K) committed = 266403840(260160K) max = 1065484288(1040512K)  
  21. getNonHeapMemoryUsage init = 134381568(131232K) used = 2638064(2576K) committed = 134709248(131552K) max = 570425344(557056K)  
  22. =======================ThreadMXBean============================   
  23. getThreadCount 5  
  24. getPeakThreadCount 5  
  25. getCurrentThreadCpuTime 93600600  
  26. getDaemonThreadCount 4  
  27. getCurrentThreadUserTime 31200200  
  28. =======================CompilationMXBean============================   
  29. getName HotSpot Client Compiler  
  30. getTotalCompilationTime 1  
  31. =======================MemoryPoolMXBean============================   
  32. getUsage init = 163840(160K) used = 473920(462K) committed = 491520(480K) max = 33554432(32768K)  
  33. getMemoryManagerNames [Ljava.lang.String;@15b7986  
  34. getUsage init = 16580608(16192K) used = 331632(323K) committed = 16580608(16192K) max = 66060288(64512K)  
  35. getMemoryManagerNames [Ljava.lang.String;@1d9dc39  
  36. getUsage init = 2031616(1984K) used = 0(0K) committed = 2031616(1984K) max = 8257536(8064K)  
  37. getMemoryManagerNames [Ljava.lang.String;@93dcd  
  38. getUsage init = 247791616(241984K) used = 0(0K) committed = 247791616(241984K) max = 991166464(967936K)  
  39. getMemoryManagerNames [Ljava.lang.String;@b89838  
  40. getUsage init = 134217728(131072K) used = 2213312(2161K) committed = 134217728(131072K) max = 536870912(524288K)  
  41. getMemoryManagerNames [Ljava.lang.String;@111a3ac  
  42. =======================MemoryPoolMXBean============================   
  43. getName Copy  
  44. getMemoryPoolNames [Ljava.lang.String;@110b053  
  45. getName MarkSweepCompact  
  46. getMemoryPoolNames [Ljava.lang.String;@a83b8a  
  47. =======================RuntimeMXBean============================   
  48. getClassPath E:workspacesmss-workspaceJmxin;E:workspacesmss-workspaceJmxlibjmxtools.jar  
  49. getLibraryPath C:Program Files (x86)Javajre6in;.;C:WindowsSunJavain;C:Windowssystem32;C:Windows;C:/Program Files (x86)/Java/jre6/bin/client;C:/Program Files (x86)/Java/jre6/bin;d:oracleproduct10.2.0client_2in;d:oracleproduct10.2.0client_1;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program Files (x86)ATI TechnologiesATI.ACECore-Static;C:SWTOOLSReadyApps;C:Program FilesTortoiseSVNin;C:Program Files (x86)Javajdk1.6.0_14in;C:Program Files (x86)Javajdk1.6.0_14jrein;  
  50. getVmVersion 14.0-b16  

http://cn-done.iteye.com/blog/2041971

原文地址:https://www.cnblogs.com/softidea/p/5175080.html