• 在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

  • 相关阅读:
    Linux 安装oracle客户端
    测试杂感:Bug Bash
    常用Eclipse插件在线安装地址
    [转]Source Insight使用小技巧小结
    cygwin安装
    Jmeter常见问题
    对测试人员或开发人员来说相互沟通有多重要?
    QTP基础学习(二)启动与设置
    什么是基准测试?
    推荐几款热门的网站测试工具
  • 原文地址:https://www.cnblogs.com/softidea/p/5175080.html
Copyright © 2020-2023  润新知