我正在嘗試使用Java來獲取當前運行的Java虛擬機使用的CPU的百分比。我的研究指出我使用com.sun.management.OperatingSystemMXBean
類。網上下面的例子中,我寫了下面的:使用OperatingSystemMXBean獲取CPU使用率
import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;
public class TestClass {
public static void main (String[] args) {
OperatingSystemMXBean bean = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(bean.getProcessCpuLoad());
System.out.println(bean.getSystemCpuLoad());
}
}
測試這兩臺機器上後,我不能停止獲取的-1.0
兩個呼叫的結果。我曾嘗試通過各種方法使用64位和32位版本的Java 7和6來運行此代碼。不過,我得到的是打印出來的-1.0
其中,according to the Javadocs,
All values betweens 0.0 and 1.0 are possible depending of the activities going on in the system. If the system recent cpu usage is not available, the method returns a negative value.
我不知道還能在這裏做什麼。加載CPU非常關鍵,我想避免使用另一個類似Sigar的庫。任何人有任何建議或對這個問題有任何見解?
感謝這個答案,但我觀察到,運行此代碼將CPU利用率提高30-40%。這意味着,只要我們運行此代碼,我們就會獲得更高的CPU利用率 –
@Shashank此代碼僅用於說明獲取CPU使用率信息的滯後性。在真實系統中,您不應該在無限循環中進行此調用。在應用程序運行幾分鐘後,每個用例就足夠了。 – Kon
即使將此代碼運行1-2秒也會增加CPU使用率。 –