2009-09-19 84 views
5

如何獲得最大的CPU時鐘在Java中

Runtime.getRuntime().availableProcessors(); 

我可以得到CPU繳費的號碼。

但我怎麼能得到他們的時鐘頻率?

我正在尋找一個操作系統indipendent解決方案。

+0

這是操作系統特定的。你正在運行哪個操作系統? – 2009-09-19 15:17:38

+0

可能只有平臺特定的解決方案(讀/ proc/cpuinfo?)。但總的來說 - 再說一次頻率並不容易......你是指當前的頻率?或最大頻率?以及沒有限制的虛擬機與最大4GHz的主機共享? (4個做這樣的主機具有4GHz的,甚至1GHz每?也許當前空閒的80MHz的值) – viraptor 2009-09-19 15:20:42

+0

我不知道你想用這個信息是什麼,但要注意,時鐘頻率不對應的速度有多快的處理器可以做計算。例如,3 GHz Pentium 4比2.4 GHz Core 2 Duo要慢。 – Jesper 2009-09-19 21:51:31

回答

6

沒有在Java SE API將返回CPU的頻率可用的功能。

另外,Runtime.availableProcessors方法返回調用該方法時可用於Java虛擬機的處理器數量,因此它不一定會返回系統中實際處理器的數量。

從已Runtime.availableProcessors方法的Java API規格:

返回處理器 提供給Java虛擬機的數量。

該值可能會在 特定調用虛擬機 期間更改。對 處理器數量敏感的 應用因此應該 偶爾對該屬性進行輪詢,並且 適當地調整其資源使用 。

爲了獲得這些信息,最有可能的,一個人必須要撥打電話通過Java Native Interface(JNI)操作系統使用本地調用。

+0

謝謝。非常清楚。我正在尋找本地方法,但如果不存在,我將學習JNI。 ;) – 2009-09-19 15:38:03

+0

這不是爲了準確地模擬底層硬件,而是爲了給出硬件可以支持的併發線程數量的大致概念。 – 2013-08-09 12:33:41