2013-04-03 15 views
0

我想收集操作系統參數..在我的mbean中,這樣註冊後我可以在JConsole上看到這些值..我已經收集了一些參數,但我無法收集的值ProcessCpuTime ,SystemCpuLoad我嘗試了OperatingSystemMXBean接口對象,但它不起作用。另外我在google上讀到,那些方法需要Windows上不支持的API。所以有另一種方法來計算這些數值...請幫助我無法訪問ProcessCpuTime,SystemCpuLoad方法

回答

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.]變種那麼有用,但你可能會得到你想要的。