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