java统计CPU使用百分比

33 篇文章 0 订阅

需要统计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.my.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.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值