需要统计CPU使用情况,不管是windos还是Linux,在网上找了许久,比较简单的方式是用javasysmon
<!-- https://mvnrepository.com/artifact/com.danielflower.apprunner/javasysmon -->
<dependency>
<groupId>com.danielflower.apprunner</groupId>
<artifactId>javasysmon</artifactId>
<version>0.3.5.0</version>
</dependency>
使用java实例:
package com.zetyun.rt.flink.Utils;
import java.lang.management.ManagementFactory;
import com.jezhumble.javasysmon.CpuTimes;
import com.jezhumble.javasysmon.JavaSysMon;
import com.sun.management.OperatingSystemMXBean;
public class JavaSysmonUtils {
@SuppressWarnings("restriction")
public static void main(String[] args) {
JavaSysMon monitor = new JavaSysMon();
while (true) {
CpuTimes cpuTimes = monitor.cpuTimes();
// getcpuInfo();
System.out.println("\n--------------------");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
CpuTimes cpuTimes2 = monitor.cpuTimes();
String cpuUsage = String.format("%.5f", cpuTimes2.getCpuUsage(cpuTimes));
System.out.println("cpuUsage :" + cpuUsage);
@SuppressWarnings("restriction")
OperatingSystemMXBean bean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
String mxcpu = String.format("%.5f", bean.getProcessCpuLoad() * 4);
System.out.println("mxcpu: " + mxcpu);
}
}
public static void getcpuInfo() {
JavaSysMon monitor = new JavaSysMon();
String osName = monitor.osName();
CpuTimes cpuTimes = monitor.cpuTimes();
long totalTime = cpuTimes.getTotalMillis();
long idleTime = cpuTimes.getIdleMillis();
long systemTime = cpuTimes.getSystemMillis();
long userTime = cpuTimes.getUserMillis();
double idlPer = ((double) idleTime / (double) totalTime) * 100;
double cupPer = (1 - ((double) idleTime / (double) totalTime)) * 100;
double cupPer2 = (1 - ((double) idleTime / (double) totalTime)) / 4 * 100;
System.out.println(idlPer);
System.out.println(cupPer);
System.out.println(cupPer2);
CpuTimes cpuTimes2 = monitor.cpuTimes();
System.out.println(cpuTimes.getCpuUsage(cpuTimes2));
}
}
运行结果:
-------------------
cpuUsage :0.09840
mxcpu: 1.10890
--------------------
cpuUsage :0.03515
mxcpu: 0.00931
--------------------
cpuUsage :0.04215
mxcpu: 0.00621
over.