在java程式碼中獲取JVM引數
阿新 • • 發佈:2019-01-27
近日關注效能調優,關注JMX,發現java.lang.management.*之強大。同時查閱了資料,整合一版關於JVM引數獲取的note,僅供參考:
Java程式碼- MemoryMXBean memorymbean = ManagementFactory.getMemoryMXBean();
- MemoryUsage usage = memorymbean.getHeapMemoryUsage();
- System.out.println("INIT HEAP: " + usage.getInit());
-
System.out.println("MAX HEAP: "
- 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程式碼- 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