gpt4 book ai didi

java - 为什么 getSystemCpuLoad() 返回负值

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:49:41 25 4
gpt4 key购买 nike

我需要使用 Java 获取CPU 使用情况内存使用情况。找到了 com.sun.management.OperatingSystemMXBeangetSystemCpuLoad() .根据文档,它返回一个介于 0.0 和 1.0 之间的值。但我总是得到-1。根据文档,当值不可用时返回。但是为什么总是返回负值。是否需要更改任何属性才能获取正确的值?

如果没有,请感谢有人可以建议任何其他方法来获取 CPU 使用率和内存使用率。

我的代码包括:

OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(operatingSystemMXBean.getSystemCpuLoad());

最佳答案

com.sun.management.OperatingSystemMXBean 的文档实际上只是说,如果由于某种原因无法访问信息,该方法将返回一个负值。例如,可能是因为数据不可用,或者可能是因为您没有检索此信息所需的特权


OperatingSystemMXBean 确实getSystemCpuLoad 开始返回任何有用信息之前似乎需要一点时间来收集数据。

下面的代码展示了如何测试这一现象。

OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
long t = System.currentTimeMillis();
while(System.currentTimeMillis() < t + 5000) {
System.out.println(operatingSystemMXBean.getSystemCpuLoad());
TimeUnit.SECONDS.sleep(1);
}

我亲身经历过的是,当此功能作为 windows 服务 由既不是 Performance Log Users 成员也不是Performance Monitor Users 组,该函数将始终返回 -1,因为用户没有必要的权限(进行系统调用,这是最终完成的)。

关于java - 为什么 getSystemCpuLoad() 返回负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45795408/

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