当前位置: 首页 > 面试题库 >

使用OperatingSystemMXBean获取CPU使用率

邢博文
2023-03-14
问题内容

我正在尝试使用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两个调用的结果。我尝试通过各种方法使用Java
7和6的64位和32位版本运行此代码。不过,我得到的是打印出的-1.0该,根据的Javadoc,

All values betweens 0.0 and 1.0 are possible depending of the activities going on in the system. If the system recent cpu usage is not available, the method returns a negative value.

我不知道还要在这里做什么。获取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());
    }

}

希望这可以帮助某人



 类似资料:
  • 问题内容: 我正在使用Sigar来获取应用程序服务器中当前正在运行的JVM的CPU使用率,并将其存储为该数据的历史视图,但是我总是获得0%的CPU百分比。 同时,我保持visualVM处于打开状态以监视CPU使用率,并且看到visualVM中的CPU%定期更改,而使用Sigar总是报告0%。 这是我定期运行的代码: 该代码始终给出0%。 在这种情况下,我在做什么错呢?如何让Sigar显示类似于Vi

  • 问题内容: 如何使用Python检索CPU的温度?(假设我在Linux上) 问题答案: py-cputemp似乎可以胜任。

  • 问题内容: 我的Go程序需要知道所有系统和用户进程的当前cpu使用率。 我如何获得? 问题答案: 我遇到了类似的问题,但从未找到轻量级的实现。这是我的解决方案的精简版,可以回答您的特定问题。我按照tylerl的建议对文件进行采样。您会注意到,我在两次采样之间等待3秒以匹配top的输出,但是在1或2秒的情况下我也取得了不错的结果。我在go例程中的循环中运行类似的代码,然后在需要其他go例程时访问cp

  • 本文向大家介绍Python获取CPU、内存使用率以及网络使用状态代码,包括了Python获取CPU、内存使用率以及网络使用状态代码的使用技巧和注意事项,需要的朋友参考一下 由于psutil已更新到3.0.1版本,最新的代码如下: 以上就是本次更新后的实例代码,大家可以一起测试下,如果有其他问题可以在下方的留言区讨论,感谢你对呐喊教程的支持。

  • 问题内容: 是否有API可以获取Linux中可用的CPU数量?我的意思是,不使用/ proc / cpuinfo或任何其他sys-node文件… 我发现使用sched.h实现: 但是,使用通用库是否还没有更高的层次? 问题答案: https://linux.die.net/man/3/get_nprocs

  • 问题内容: 我正在尝试获取%的总CPU使用率。首先,我首先要说“ top”根本不会做,因为cpu转储之间会有延迟,它需要2个转储和几秒钟的时间,这使我的程序挂起(我不想给它自己的线程) 我尝试的下一件事情是“ ps”,它是即时的,但总的总数总是很高(超过20),当我实际上让我的cpu做某事时,它保持在20左右… 还有其他方法可以获取总的CPU使用率吗?超过一秒还是更长的时间都没有关系……但是更长的