近日关注性能调优,关注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. SE 2014年4月3日

    一  OSPF协议都支持哪些特殊区域?每种特殊区域都有什么特点. OSPF协议支持的特殊区域主要有stub区域.totally stub区域以及nssa区域,其中stub区域一般出现在末梢网络,即它的 ...

  2. redis作为mysql的缓存服务器(读写分离) (转)

    一.redis简介Redis是一个key-value存储系统.和Memcached类似,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录 ...

  3. Oracle大数据量查询实际分析

    Oracle数据库: 刚做一张5000万条数据的数据抽取,当前表同时还在继续insert操作,每分钟几百条数据. 该表按照时间,以月份为单位做的表分区,没有任何索引,当前共有14个字段,平均每个字段3 ...

  4. 解决Android Device Chooser 找不到设备问题

    第一种情况: 已经启动了官方的模拟器也进入了Android手机界面,可是在Android Device Chooser 看不到设备,怎么办? 例如以下图所看到的,使用Reset adb 或者在adb所 ...

  5. Python学习入门基础教程(learning Python)--3.3.3 Python逻辑关系表达式

    在if分支判断语句里的条件判断语句不一定就是一个表达式,可以是多个(布尔)表达式的组合关系运算,这里如何使用更多的关系表达式构建出一个比较复杂的条件判断呢?这里需要再了解一下逻辑运算的基础知识.逻辑关 ...

  6. Applet 数字签名技术完全攻略

      这里说声对不起大家.毕竟2几年前,我想写这篇文章,但因为他才懒得一直没有写.同时也给自己的东西好.前些日子我老大让我又搞这个东西发现我曾经的资料没留,又凭着自己印象从新来过.但发现网上写的东西真的 ...

  7. ubuntu上搭建工作环境

    版本号ubuntu desktop, v12.4, v13.10. 长处: 1)绚丽易用的可视化环境: 2)丰富的可用package.在这点上比centos强太多.后者更新较慢: 不足: 1)在笔记本 ...

  8. python可变参数调用函数的问题

    已使用python实现的一些想法,近期使用python这种出现的要求,它定义了一个函数,第一种是一般的参数,第二个参数是默认,并有可变参数.在第一项研究中python时间,不知道keyword可变参数 ...

  9. logback与Spring、SpringMVC结合使用教程(转) logback good

    摘要:本文主要介绍了如何在spring.springMVC中使用logback 一.logback与Spirng结合使用 1.maven添加引用: <dependency> <gro ...

  10. rsync+inotify实现server实时备份

    inotify实现对文件夹下文件进行监听的原理: inotify集成到内核中,通过内核提供的接口.使用inotify作为第三方的软件对文件夹变化进行监控. inotifywait命令能够对文件夹中的文 ...