在java代码中获取JVM参数(转)
近日关注性能调优,关注JMX,发现java.lang.management.*之强大。同时查阅了资料,整合一版关于JVM参数获取的note,仅供参考:
- MemoryMXBean memorymbean = ManagementFactory.getMemoryMXBean();
- MemoryUsage usage = memorymbean.getHeapMemoryUsage();
- System.out.println("INIT HEAP: " + usage.getInit());
- System.out.println("MAX HEAP: " + usage.getMax());
- System.out.println("USE HEAP: " + usage.getUsed());
- System.out.println("\nFull Information:");
- System.out.println("Heap Memory Usage: "
- + memorymbean.getHeapMemoryUsage());
- System.out.println("Non-Heap Memory Usage: "
- + memorymbean.getNonHeapMemoryUsage());
- List<String> inputArguments = ManagementFactory.getRuntimeMXBean().getInputArguments();
- System.out.println("===================java options=============== ");
- System.out.println(inputArguments);
- System.out.println("=======================通过java来获取相关系统状态============================ ");
- int i = (int)Runtime.getRuntime().totalMemory()/1024;//Java 虚拟机中的内存总量,以字节为单位
- System.out.println("总的内存量 i is "+i);
- int j = (int)Runtime.getRuntime().freeMemory()/1024;//Java 虚拟机中的空闲内存量
- System.out.println("空闲内存量 j is "+j);
- System.out.println("最大内存量 is "+Runtime.getRuntime().maxMemory()/1024);
- System.out.println("=======================OperatingSystemMXBean============================ ");
- OperatingSystemMXBean osm = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
- // System.out.println(osm.getFreeSwapSpaceSize()/1024);
- // System.out.println(osm.getFreePhysicalMemorySize()/1024);
- // System.out.println(osm.getTotalPhysicalMemorySize()/1024);
- //获取操作系统相关信息
- System.out.println("osm.getArch() "+osm.getArch());
- System.out.println("osm.getAvailableProcessors() "+osm.getAvailableProcessors());
- //System.out.println("osm.getCommittedVirtualMemorySize() "+osm.getCommittedVirtualMemorySize());
- System.out.println("osm.getName() "+osm.getName());
- //System.out.println("osm.getProcessCpuTime() "+osm.getProcessCpuTime());
- System.out.println("osm.getVersion() "+osm.getVersion());
- //获取整个虚拟机内存使用情况
- System.out.println("=======================MemoryMXBean============================ ");
- MemoryMXBean mm=(MemoryMXBean)ManagementFactory.getMemoryMXBean();
- System.out.println("getHeapMemoryUsage "+mm.getHeapMemoryUsage());
- System.out.println("getNonHeapMemoryUsage "+mm.getNonHeapMemoryUsage());
- //获取各个线程的各种状态,CPU 占用情况,以及整个系统中的线程状况
- System.out.println("=======================ThreadMXBean============================ ");
- ThreadMXBean tm=(ThreadMXBean)ManagementFactory.getThreadMXBean();
- System.out.println("getThreadCount "+tm.getThreadCount());
- System.out.println("getPeakThreadCount "+tm.getPeakThreadCount());
- System.out.println("getCurrentThreadCpuTime "+tm.getCurrentThreadCpuTime());
- System.out.println("getDaemonThreadCount "+tm.getDaemonThreadCount());
- System.out.println("getCurrentThreadUserTime "+tm.getCurrentThreadUserTime());
- //当前编译器情况
- System.out.println("=======================CompilationMXBean============================ ");
- CompilationMXBean gm=(CompilationMXBean)ManagementFactory.getCompilationMXBean();
- System.out.println("getName "+gm.getName());
- System.out.println("getTotalCompilationTime "+gm.getTotalCompilationTime());
- //获取多个内存池的使用情况
- System.out.println("=======================MemoryPoolMXBean============================ ");
- List<MemoryPoolMXBean> mpmList=ManagementFactory.getMemoryPoolMXBeans();
- for(MemoryPoolMXBean mpm:mpmList){
- System.out.println("getUsage "+mpm.getUsage());
- System.out.println("getMemoryManagerNames "+mpm.getMemoryManagerNames().toString());
- }
- //获取GC的次数以及花费时间之类的信息
- System.out.println("=======================MemoryPoolMXBean============================ ");
- List<GarbageCollectorMXBean> gcmList=ManagementFactory.getGarbageCollectorMXBeans();
- for(GarbageCollectorMXBean gcm:gcmList){
- System.out.println("getName "+gcm.getName());
- System.out.println("getMemoryPoolNames "+gcm.getMemoryPoolNames());
- }
- //获取运行时信息
- System.out.println("=======================RuntimeMXBean============================ ");
- RuntimeMXBean rmb=(RuntimeMXBean)ManagementFactory.getRuntimeMXBean();
- System.out.println("getClassPath "+rmb.getClassPath());
- System.out.println("getLibraryPath "+rmb.getLibraryPath());
- System.out.println("getVmVersion "+rmb.getVmVersion());
运行结果如下:
- INIT HEAP: 268435456
- MAX HEAP: 1065484288
- USE HEAP: 331632
- Full Information:
- Heap Memory Usage: init = 268435456(262144K) used = 331632(323K) committed = 266403840(260160K) max = 1065484288(1040512K)
- Non-Heap Memory Usage: init = 134381568(131232K) used = 2607888(2546K) committed = 134709248(131552K) max = 570425344(557056K)
- ==========java options=====
- [-Xms256m, -Xmx1024m, -XX:PermSize=128M, -XX:MaxPermSize=512m, -Dfile.encoding=UTF-8]
- =======================通过java来获取相关系统状态============================
- 总的内存量 i is 260160
- 空闲内存量 j is 259836
- 最大内存量 is 1040512
- =======================OperatingSystemMXBean============================
- osm.getArch() x86
- osm.getAvailableProcessors() 2
- osm.getName() Windows 7
- osm.getVersion() 6.1
- =======================MemoryMXBean============================
- getHeapMemoryUsage init = 268435456(262144K) used = 331632(323K) committed = 266403840(260160K) max = 1065484288(1040512K)
- getNonHeapMemoryUsage init = 134381568(131232K) used = 2638064(2576K) committed = 134709248(131552K) max = 570425344(557056K)
- =======================ThreadMXBean============================
- getThreadCount 5
- getPeakThreadCount 5
- getCurrentThreadCpuTime 93600600
- getDaemonThreadCount 4
- getCurrentThreadUserTime 31200200
- =======================CompilationMXBean============================
- getName HotSpot Client Compiler
- getTotalCompilationTime 1
- =======================MemoryPoolMXBean============================
- getUsage init = 163840(160K) used = 473920(462K) committed = 491520(480K) max = 33554432(32768K)
- getMemoryManagerNames [Ljava.lang.String;@15b7986
- getUsage init = 16580608(16192K) used = 331632(323K) committed = 16580608(16192K) max = 66060288(64512K)
- getMemoryManagerNames [Ljava.lang.String;@1d9dc39
- getUsage init = 2031616(1984K) used = 0(0K) committed = 2031616(1984K) max = 8257536(8064K)
- getMemoryManagerNames [Ljava.lang.String;@93dcd
- getUsage init = 247791616(241984K) used = 0(0K) committed = 247791616(241984K) max = 991166464(967936K)
- getMemoryManagerNames [Ljava.lang.String;@b89838
- getUsage init = 134217728(131072K) used = 2213312(2161K) committed = 134217728(131072K) max = 536870912(524288K)
- getMemoryManagerNames [Ljava.lang.String;@111a3ac
- =======================MemoryPoolMXBean============================
- getName Copy
- getMemoryPoolNames [Ljava.lang.String;@110b053
- getName MarkSweepCompact
- getMemoryPoolNames [Ljava.lang.String;@a83b8a
- =======================RuntimeMXBean============================
- getClassPath E:\workspaces\mss-workspace\Jmx\bin;E:\workspaces\mss-workspace\Jmx\lib\jmxtools.jar
- 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;
- getVmVersion 14.0-b16
http://cn-done.iteye.com/blog/2041971
在java代码中获取JVM参数(转)的更多相关文章
- JAVA代码中获取JVM信息
一.JAVA中获取JVM的信息 原理,利用JavaSDK自带的ManagementFactory类来获取. 二.获取信息 1.获取进程ID @Test public void test1() { Ru ...
- java代码中获取进程process id(转)
另一方面,线程ID=进程ID+内部线程对象ID并不成立, 参考: blog.csdn.net/heyetina/article/details/6633901 如何在java代码中获取进 ...
- Java代码中获取Json的key值
测试json字符串: {"access_token":"hkbQl5o_l67dZ7_vJRATKBwTLk9Yj5QyMuOJThAr8Baj0xWf4wxW1p4ym ...
- Java代码中获取配置文件(config.properties)中内容的两种方法
方法千千万,本人暂时只总结了两种方法. (1)config.properties中的内容如图 在applicationContext.xml中配置 <!-- 引入配置文件 --> < ...
- java代码中获取classpath路径
Javaweb工程中,有时候需要自己手动的去读取classpath下面的配置文件,这里总结一点读取classpath路径的方法,分享一下. 方法一: String path = Test.class. ...
- Android开发之java代码中获取当前系统的时间工具类
/** * 获取当前时间 * * @return */ public String getTime() { Date date = new Date();// 创建一个时间对象,获取到当前的时间 Si ...
- 【转】使用JavaParser获得Java代码中的类名、方法形参列表中的参数名以及统计总的文件个数与不能解析的文件个数
遍历目录查找Java文件: public static void ergodicDir(File dir, HashSet<String> argNameSet, HashSet<S ...
- java如何从一段html代码中获取图片的src路径
java如何从一段html代码中获取图片的src路径 package com.cellstrain.icell.Test; import java.util.ArrayList;import java ...
- java高级用法之:在JNA中将本地方法映射到JAVA代码中
目录 简介 Library Mapping Function Mapping Invocation Mapping 防止VM崩溃 性能考虑 总结 简介 不管是JNI还是JNA,最终调用的都是nativ ...
随机推荐
- Netflix公司监控内部安全的开源项目
Netfix公司已经公布了三个内部工具,用于捕捉黑客在使用互联网服务时留下的痕迹. AndyHoernecke和Netflix公司的云安全团队成员ScottBehrens指出:"很多安全团队 ...
- Problem and Solution Code Snippets
(积累知识,遇到发展,本文仅用于备忘录,不时它需要召回准备) Problem: 依据String的大小来调整Label的frame.在view中又一次更新views的layout并显示. Soluti ...
- MySQL 触发器结构及三个案例demo
--你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够了.这跟SQL的标准有所不同. CREATE TRIGGER语法 CREATE TRIGG ...
- mysql用户权限分配及主从同步复制
赋予wgdp用户查询权限: grant select on wg_dp.* to 'wgdp'@'%' IDENTIFIED BY 'weigou123'; grant all privileges ...
- 辛星分析html中间name和id
差额
朋友们可以新手也能很容易区分id和class,但不一定很容易区分id和name,以下说一下二者的差别和联系. 首先是联系,它们都能够用来标记一个元素,并且能够用JavaScript来操作,可是操作方法 ...
- OSGI学习总结
最近的一项研究了解了一下OSGI技术,感觉OSGI尽管有一定的学习难度.可是终于掌握和推广之后将是一项对系统开发比較实用的技术.在此和大家分享一下自己的感悟. 1.什么是OSGI OSGI直译为&qu ...
- ACdream原创群赛(18)のAK's dream题解
只做了4题水题ADGI A题需要注意的就是“[...]”的输出了,何时输出,何时不输出. #include <stdio.h> int main() { int n, cur, d; ; ...
- 新型I/O架构引领存储之变(四)
新型I/O架构引领存储之变(四) 作者:廖恒 应对挑战--商务及技术考量 本文前面的部分分析了砖块模式与生俱来的总拥有成本(TCO)过高的问题.为了战胜这一挑战,超大规模数据中心的运营者须要从两个不同 ...
- Applet 数字签名技术完全攻略
这里说声对不起大家.毕竟2几年前,我想写这篇文章,但因为他才懒得一直没有写.同时也给自己的东西好.前些日子我老大让我又搞这个东西发现我曾经的资料没留,又凭着自己印象从新来过.但发现网上写的东西真的 ...
- UVA - 12232 Exclusive-OR (并查集扩展偏离向量)
Description You are not given n non-negative integersX0,X1,..., Xn-1 less than220, but they do exist ...