近日关注性能调优,关注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. Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架

    Phaser是一款专门用于桌面及移动HTML5 2D游戏开发的开源免费框架,提供JavaScript和TypeScript双重支持,内置游戏对象的物理属性,采用Pixi.js引擎以加快Canvas和W ...

  2. 使用windows-SQLyog连接linux-mysql

          嘿嘿,最近又清闲了一点,重新安装了mysql去学习.   -----博客园-邦邦酱好 系统环境: 1. 主机为windows系统,安装了SQLyog. 2. 主机上还安装了虚拟机,系统为c ...

  3. UVA 11235 Frequent values(RMQ)

    Frequent values TimeLimit:3000Ms , ... , an in non-decreasing order. In addition to that, you are gi ...

  4. hdu 3790 (最短路径问题dijkstra)

    主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起 ...

  5. GlusterFS源代码解析 —— GlusterFS 简单介绍

    原文地址:http://blog.csdn.net/wangyuling1234567890/article/details/24564185 -- -- 本系列博客源代码是基于GlusterFS 3 ...

  6. C++转让Lua

    转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/39756423 我使用的cocos2d-x版本号是2.3.3.先在一个C++projec ...

  7. Hadoop学习笔记(两)设置单节点集群

    本文描写叙述怎样设置一个单一节点的 Hadoop 安装.以便您能够高速运行简单的操作,使用 Hadoop MapReduce 和 Hadoop 分布式文件系统 (HDFS). 參考官方文档:Hadoo ...

  8. php按照奖品百分比随机抽奖代码分析

    这个忘记从哪里copy过来了 /** * 概率算法 * @param array $probability * @return integer|string */ function get_rand( ...

  9. Nginx 防CC攻击拒绝代理访问

    先大概说说简单的结构…前端一个Nginx反向代理,后端一个Nginx instance app for PHP…实际上就是个Discuz,之前面对CC攻击都是预警脚本或者走CDN,但是这次攻击者不再打 ...

  10. 玩转html5(二)----用canvas结合脚本在画布上画简单的图(html5又一强大功能)

    在html5中可以使用canvas标签在画布上画图,先直接上代码,这篇文章先简单介绍一下canvas的使用方法,简单画几个圆,矩形,三角形,写字. 在代码中均给出了注释,在这里特别强调的一点是:使用c ...