【问题标题】:Java get CPU usage percentage of coresJava获取内核的CPU使用百分比
【发布时间】:2018-06-05 09:41:30
【问题描述】:

我想获取所有内核的总 CPU 使用率。我需要打印这样的东西:

Cpu 1: 33%
Cpu 2: 12%
Cpu 3: 66%
Cpu 4: 100%

我尝试使用此代码:

OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
int availableProcessors = operatingSystemMXBean.getAvailableProcessors();
long prevUpTime = runtimeMXBean.getUptime();
long prevProcessCpuTime = operatingSystemMXBean.getProcessCpuTime();
double cpuUsage;
try
{
    Thread.sleep(500);
}
catch (Exception ignored) { }

operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
long upTime = runtimeMXBean.getUptime();
long processCpuTime = operatingSystemMXBean.getProcessCpuTime();
long elapsedCpu = processCpuTime - prevProcessCpuTime;
long elapsedTime = upTime - prevUpTime;

cpuUsage = Math.min(99F, elapsedCpu / (elapsedTime * 10000F * availableProcessors));
System.out.println("Java CPU: " + cpuUsage);

但是这段代码给了我这样的输出:Java CPU: 27.504911422729492。 有人可以帮我解决这个问题吗?

【问题讨论】:

  • 你期待什么?
  • 那又怎样?你想format a double
  • 我需要获取有关所有内核及其负载的信息。这段代码可能为我提供了有关一个核心的信息。我在 linux 环境中需要类似“htop”的命令。

标签: java performance cpu monitoring cpu-usage


【解决方案1】:

JavaSysMon 使用特定于操作系统的方法,例如在 Linux 上,它解析 /proc/cpuinfo 以枚举内核。对于实际的 CPU 核心利用率,它会解析 /proc/stat 文件(请参阅 LinuxMonitor)。

【讨论】:

  • 谢谢!能否提供一段4核输出的代码及其用途?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 2020-11-27
相关资源
最近更新 更多