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

时间:2021-10-27 17:24:28

实例如下:

java" id="highlighter_862035">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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());

以上这篇在java代码中获取JVM参数的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。