近日关注性能调优,关注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. Java多线程使用场景

    使用多线程就一定效率高吗? 有时候使用多线程并不是为了提高效率,而是使得CPU能够同时处理多个事件. 使用场景1 为什么了不阻塞主线程,启动其他线程来做耗时的事情. 比如app开发中耗时的操作都不在U ...

  2. 开启本地MySql数据库远程连接

    解决MySQL不允许从远程访问的方法 开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 33 ...

  3. centos一些命令

    1.查看系统使用端口并释放端口 [root@my_nn_01 WEB-INF]# lsof -w -n -i tcp:80 COMMAND   PID USER   FD   TYPE DEVICE ...

  4. Linux查看连接数,并发数

    Linux查看连接数,并发数 博客分类: 小记 linux  软连接 ln -s /home/ictfmcg/data/photo /var/jtnd/data/photo tomcat 6的Conn ...

  5. UVA 707 - Robbery(内存搜索)

    UVA 707 - Robbery 题目链接 题意:在一个w * h的图上.t个时刻,然后知道一些信息,每一个时刻没有小偷的矩阵位置,问哪些时刻能够唯一确定小偷位置.和确定小偷是否已经逃走,假设没逃走 ...

  6. SOHO路由器的静态路由的不同

    网络拓扑如下,其中RA与RB皆为TP-LINK家用路由器 最终在TP-LINK官网的官网上找到这么一段话 静态路由是在路由器中手工设置的固定的路由条目.我司路由器静态路由是基于ICMP重定向原理,与其 ...

  7. Drupal 7 电子邮件的发送设置 SMTP, Mail System, Mime Mail

    尽管Drupal自带发送email功能,可是非常多server须要SMTP验证.这个时候就须要安装 SMTP 模块. 激活 SMTP 模块 进入配置 admin/config/system/smtp ...

  8. C#项目开发实践前言

    曾经没有做过项目开发实现解说,都是在工作过程其中,自动学习,查找资料,由于在曾经的公司就我一人在做c#WinForm开发,所以,有时候在公司培训会上,我也会为新的员工进行过一些简单的项目解说,基于在培 ...

  9. Parallel Python——一个简单的分布式计算系统

    如何建立一个高速的分布式计算平台?Parallel python此目的. Parallel Python(http://www.parallelpython.com/content/view/15/3 ...

  10. 批处理bat脚本编写(附详细例子)

                                                        批处理bat脚本编写(附详细例子) 由于在项目开发的过程中经常需要编写bat脚本,而看大牛们编写 ...