我想在我的mbean中收集操作系统参数..以便在注册后我可以在JConsole上看到这些值。我已经收集了一些参数但是我无法收集 ProcessCpuTime,SystemCpuLoad 我尝试使用 OperatingSystemMXBean 接口对象,但它不起作用。另外我在google上看到那些方法需要Windows上不支持的API。所以有另一种方法来数学计算这些值...请帮帮我
答案 0 :(得分:0)
{J}的Windows JVM实施是java.lang.management.OperatingSystemMXBean。您可以通过强制转换前者直接引用它:
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.]变体那么有用,但你可能会得到你想要的东西。