gpt4 book ai didi

java - 使用 OperatingSystemMXBean 获取 CPU 使用率

转载 作者:搜寻专家 更新时间:2023-10-30 21:15:46 24 4
gpt4 key购买 nike

我正在尝试使用 Java 获取当前运行的 Java 虚拟机使用的 CPU 百分比。我的研究指出我使用 com.sun.management.OperatingSystemMXBean 类。根据在线示例,我编写了以下内容:

import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;


public class TestClass {

public static void main (String[] args) {
OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();

System.out.println(bean.getProcessCpuLoad());
System.out.println(bean.getSystemCpuLoad());

}

}

在两台机器上测试后,我无法停止两次调用都得到 -1.0 的结果。我尝试通过各种方法使用 64 位和 32 位版本的 Java 7 和 6 运行此代码。尽管如此,我得到的只是 -1.0 的打印,according to the Javadocs ,

根据系统中正在进行的 Activity ,0.0 和 1.0 之间的所有值都是可能的。如果系统最近的 cpu 使用率不可用,则该方法返回一个负值。

我不知道还能在这里做什么。获得 CPU 负载至关重要,我想避免使用其他库,如 Sigar。有人对此问题有任何建议或有任何见解吗?

最佳答案

只是回答我自己的问题,以防它能帮助到别人。

我所做的在技术上是正确的,但是我没有给 OperatingSystemMXBean 足够的时间来收集 CPU 使用信息。 JVM 必须实际运行几秒钟才能收集 CPU 使用信息,然后刷新分辨率似乎取决于实现。

运行具有以下更改的代码将在约 2 秒后在我的机器上开始生成使用信息:

public static void main(String[] args) {
OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean) ManagementFactory
.getOperatingSystemMXBean();

while (true) {
System.out.println(bean.getProcessCpuLoad());
System.out.println(bean.getSystemCpuLoad());
}

}

希望对大家有帮助

关于java - 使用 OperatingSystemMXBean 获取 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19781087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com