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

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

运行结果如下:

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

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

在java代码中获取JVM参数(转)的更多相关文章

  1. JAVA代码中获取JVM信息

    一.JAVA中获取JVM的信息 原理,利用JavaSDK自带的ManagementFactory类来获取. 二.获取信息 1.获取进程ID @Test public void test1() { Ru ...

  2. java代码中获取进程process id(转)

    另一方面,线程ID=进程ID+内部线程对象ID并不成立,    参考: blog.csdn.net/heyetina/article/details/6633901     如何在java代码中获取进 ...

  3. Java代码中获取Json的key值

    测试json字符串: {"access_token":"hkbQl5o_l67dZ7_vJRATKBwTLk9Yj5QyMuOJThAr8Baj0xWf4wxW1p4ym ...

  4. Java代码中获取配置文件(config.properties)中内容的两种方法

    方法千千万,本人暂时只总结了两种方法. (1)config.properties中的内容如图 在applicationContext.xml中配置 <!-- 引入配置文件 --> < ...

  5. java代码中获取classpath路径

    Javaweb工程中,有时候需要自己手动的去读取classpath下面的配置文件,这里总结一点读取classpath路径的方法,分享一下. 方法一: String path = Test.class. ...

  6. Android开发之java代码中获取当前系统的时间工具类

    /** * 获取当前时间 * * @return */ public String getTime() { Date date = new Date();// 创建一个时间对象,获取到当前的时间 Si ...

  7. 【转】使用JavaParser获得Java代码中的类名、方法形参列表中的参数名以及统计总的文件个数与不能解析的文件个数

    遍历目录查找Java文件: public static void ergodicDir(File dir, HashSet<String> argNameSet, HashSet<S ...

  8. java如何从一段html代码中获取图片的src路径

    java如何从一段html代码中获取图片的src路径 package com.cellstrain.icell.Test; import java.util.ArrayList;import java ...

  9. java高级用法之:在JNA中将本地方法映射到JAVA代码中

    目录 简介 Library Mapping Function Mapping Invocation Mapping 防止VM崩溃 性能考虑 总结 简介 不管是JNI还是JNA,最终调用的都是nativ ...

随机推荐

  1. jenkins 集成 redmine 账户验证的方案

    jenkins 集成 redmine 账户验证的方案 赖勇浩(http://laiyonghao.com) 动机 Jenkins 是最著名的持续集成工具,又因为它开源免费.插件众多,成为了许多团队做持 ...

  2. Bootstrap之表格

    基本实例 为随意<table>标签加入.table类能够为其赋予主要的样式-少量的内补(padding)和水平方向的分隔线. <table class="table&quo ...

  3. 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)

    近期看老罗的视频,跟着完毕了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完毕对数据库的增删改查.当中查询这块,包含普通的查询和利用反射完毕的查询,主要包含以下几个函数接口 ...

  4. Python学习入门基础教程(learning Python)--2.3.1 Python传参函数设计

    本节主要讨论设计传递多个参数子函数的设计方法. 在2.3节里我们讨论了如何自己设计一个带参数的子函数的设计方法,现在我们研究一下如何传递两个及以上参数的设计方法. 函数为何要带参数呢?其实原因很简单, ...

  5. 本科非cs菜鸟计算机面试实录

    两年制小硕,本硕期间差不多都打酱油的.本科非cs专业,硕士cs,编程基础一般,专业基础尚可.研究生期间分析分析了pgsql数据库的源码:同时实验室一些杂项目:自己业余为了应试读了些计算机书.自己当时q ...

  6. python开发_tkinter_小球完全弹性碰撞游戏

    python开发_tkinter_小球完全弹性碰撞游戏   完成这个小球的完全弹性碰撞游戏灵感来自于: 下面是我花了一周下班时间所编写的一个小球完全弹性碰撞游戏: 游戏初始化状态: 最下面的游标和修改 ...

  7. GUI测试要点

    本人测试知识还不完整,所以下面的文字总结自网络上的文章,红色字体为我平时的测试经验,如有雷同之处,还请见谅,仅自己学习之用. 转载请说明来自博客园--邦邦酱好. ------------------- ...

  8. 【Unity Shaders】使用Unity Render Textures实现画面特效——画面特效中的亮度、饱和度和对照度

    本系列主要參考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同一时候会加上一点个人理解或拓展. 这里是本书全部的插图. 这里是本书所需的代码 ...

  9. Intent有可能的使用(两)

    Intent作为联系各Activity之间的纽带,其作用并不只只限于简单的数据传递. 通过其自带的属性.事实上能够方便的完毕非常多较为复杂的操作. 比如直接调用拨号功能.直接自己主动调用合适的程序打开 ...

  10. 二分图行列匹配---> hdu2119,hdu1498

    hdu2119 题意:给定一个矩形方格,每个格子里面的数字是0或者1,每次操作可以把一整行或列的1变成0,问最少多少次操作能将1全部变为0 一次可以消除某一行或者某一列的1但是可以这么想,最多有多少个 ...