java统计CPU使用百分比

需要统计CPU使用情况,不管是windos还是Linux,在网上找了许久,比较简单的方式是用javasysmon

[html]  view plain  copy
  1. <!-- https://mvnrepository.com/artifact/com.danielflower.apprunner/javasysmon -->  
  2. <dependency>  
  3.     <groupId>com.danielflower.apprunner</groupId>  
  4.     <artifactId>javasysmon</artifactId>  
  5.     <version>0.3.5.0</version>  
  6. </dependency>  

使用java实例:

[java]  view plain  copy
  1. package com.zetyun.rt.flink.Utils;  
  2.   
  3. import java.lang.management.ManagementFactory;  
  4.   
  5. import com.jezhumble.javasysmon.CpuTimes;  
  6. import com.jezhumble.javasysmon.JavaSysMon;  
  7. import com.sun.management.OperatingSystemMXBean;  
  8.   
  9. public class JavaSysmonUtils {  
  10.   
  11.     @SuppressWarnings("restriction")  
  12.     public static void main(String[] args) {  
  13.   
  14.         JavaSysMon monitor = new JavaSysMon();  
  15.   
  16.         while (true) {  
  17.   
  18.             CpuTimes cpuTimes = monitor.cpuTimes();  
  19.   
  20.             // getcpuInfo();  
  21.   
  22.             System.out.println("\n--------------------");  
  23.   
  24.             try {  
  25.                 Thread.sleep(5000);  
  26.             } catch (InterruptedException e) {  
  27.                 // TODO Auto-generated catch block  
  28.                 e.printStackTrace();  
  29.             }  
  30.   
  31.             CpuTimes cpuTimes2 = monitor.cpuTimes();  
  32.   
  33.             String cpuUsage = String.format("%.5f", cpuTimes2.getCpuUsage(cpuTimes));  
  34.   
  35.             System.out.println("cpuUsage :" + cpuUsage);  
  36.   
  37.             @SuppressWarnings("restriction")  
  38.             OperatingSystemMXBean bean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();  
  39.             String mxcpu = String.format("%.5f", bean.getProcessCpuLoad() * 4);  
  40.             System.out.println("mxcpu: " + mxcpu);  
  41.   
  42.         }  
  43.   
  44.     }  
  45.   
  46.     public static void getcpuInfo() {  
  47.   
  48.         JavaSysMon monitor = new JavaSysMon();  
  49.         String osName = monitor.osName();  
  50.   
  51.         CpuTimes cpuTimes = monitor.cpuTimes();  
  52.         long totalTime = cpuTimes.getTotalMillis();  
  53.         long idleTime = cpuTimes.getIdleMillis();  
  54.         long systemTime = cpuTimes.getSystemMillis();  
  55.         long userTime = cpuTimes.getUserMillis();  
  56.   
  57.         double idlPer = ((double) idleTime / (double) totalTime) * 100;  
  58.         double cupPer = (1 - ((double) idleTime / (double) totalTime)) * 100;  
  59.         double cupPer2 = (1 - ((double) idleTime / (double) totalTime)) / 4 * 100;  
  60.         System.out.println(idlPer);  
  61.         System.out.println(cupPer);  
  62.         System.out.println(cupPer2);  
  63.   
  64.         CpuTimes cpuTimes2 = monitor.cpuTimes();  
  65.   
  66.         System.out.println(cpuTimes.getCpuUsage(cpuTimes2));  
  67.   
  68.     }  
  69.   
  70. }  

运行结果:

[html]  view plain  copy
  1. -------------------  
  2. cpuUsage :0.09840  
  3. mxcpu: 1.10890  
  4.   
  5. --------------------  
  6. cpuUsage :0.03515  
  7. mxcpu: 0.00931  
  8.   
  9. --------------------  
  10. cpuUsage :0.04215  
  11. mxcpu: 0.00621  



over.


猜你喜欢

转载自blog.csdn.net/liuxiangke0210/article/details/80208183