java jvm参数获取_在java代码中获取JVM参数

本文介绍了如何利用Java Management Extensions (JMX)来获取JVM的相关信息,包括堆内存、非堆内存、线程、编译、内存池和垃圾收集器的详细状态。通过示例代码展示了如何打印JVM启动参数,以及监控内存使用、线程和编译时间等关键指标,对于Java性能优化具有指导意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日关注性能调优,关注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 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 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 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值