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