`

在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

 

 

 

分享到:
评论

相关推荐

    在java代码中获取JVM参数的方法

    下面小编就为大家带来一篇在java代码中获取JVM参数的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 342 13.1 概述 / 342 13.2 线程安全 / 343 13.2.1 Java语言中的线程安全 / 343 13.2.2 线程安全的实现方法 / 348 13.3 锁优化 / 356 13.3.1 自旋锁与自适应自旋 / 356 13.3.2 锁消除 / 357 13.3.3 锁粗化 ...

    JAVA上百实例源码以及开源项目源代码

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    JAVA上百实例源码以及开源项目

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    Java程序性能优化

    第5章立足于JVM虚拟机层面,介绍如何通过设置合理的JVM参数提升Java程序的性能;第6章为工具篇,介绍获取和监控程序或系统性能指标的各种工具,包括相关的故障排查工具。 《Java程序性能优化:让你的Java程序更快、更...

    JAVA_API1.6文档(中文)

    java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供...

    java开源包8

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    Java 1.6 API 中文 New

    java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了...

    JavaAPI1.6中文chm文档 part1

    java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供...

    java程序性能优化

    第5章立足于JVM虚拟机层面,介绍如何通过设置合理的JVM参数提升Java程序的性能。第6章为工具篇,介绍了获取和监控程序或系统性能指标的各种工具,包括相关的故障排查工具。, 本书适合所有Java程序员、软件设计师、...

    java开源包10

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    Java中this与super的区别

    在Java中,有时还会遇到子类中的成员变量或方法与超类(有时也称父类) 中的成员变量或方法同名。因为子类中的成员变量或方法名优先级高, 所以子类中的同名成员变量或方法就隐藏了超类的成员变量或方法, 但是...

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-004-编程基础-在Window中显示文件扩展名.mp4 北京动力节点-Java编程零基础教程-005-Java语言概述-Java的诞生.mp4 北京动力节点-Java编程零基础教程-006-Java语言概述-Java的特点...

    大优惠 Java程序性能优化 让你的Java程序更快、更稳定最新版

    Java是目前应用最为广泛的软件开发平台,学习...第5章立足于JVM虚拟机层面,介绍如何通过设置合理的JVM参数提升Java程序的性能。第6章为工具篇,介绍了获取和监控程序或系统性能指标的各种工具,包括相关的故障排查工具

    JavaAPI中文chm文档 part2

    java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供...

Global site tag (gtag.js) - Google Analytics