0

我想在我的 mbean 中收集操作系统参数..以便在注册后我可以在 JConsole 上看到这些值..我已经收集了一些参数但我无法收集ProcessCpuTime、SystemCpuLoad的值我尝试使用OperatingSystemMXBean接口对象但它不起作用。我也在谷歌上读到,这些方法需要 Windows 不支持的 API。所以有没有另一种方法来数学计算这些值......请帮助我

4

1 回答 1

0

java.lang.management.OperatingSystemMXBean的 Windows JVM 实现是com.sun.management.OperatingSystem。您可以通过转换前者来直接引用它:

import java.lang.management.*;
import com.sun.management.*;
...
OperatingSystem os = (OperatingSystem)ManagementFactory.getOperatingSystemMXBean();

这个类的 Java 6 和 java 7 版本之间存在一些差异,可以通过这个 Groovy 脚本观察到:

import java.lang.management.*;

os = ManagementFactory.getOperatingSystemMXBean();
println os.getClass().getName();

try { println "Process CPU Load:${os.getProcessCpuLoad()}"; } catch (e) {}
try { println "Process CPU Time:${os.getProcessCpuTime()}"; } catch (e) {}
try { println "System CPU Load:${os.getSystemCpuLoad()}"; } catch (e) {}

Java 6 输出:

com.sun.management.OperatingSystem

进程 CPU 时间:79810111600

Java 7 输出:

com.sun.management.OperatingSystem

进程 CPU 负载:-1.0

进程CPU时间:1840811800

系统 CPU 负载:0.4902940980431365

所以它不如 Linux [et.al.] 变体有用,但你可能会得到你想要的东西。

于 2013-04-03T13:24:53.090 回答