java统计CPU使用百分比

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





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值