2013-04-03 51 views
0

當我試圖對我的代碼的運行時間進行粗略估計時,我遇到了這種情況:第一部分代碼的CPU使用率保持在10%左右,涉及遍歷2個字符串和折騰東西變成一個哈希集。當代碼到達第二部分(2個嵌套for循環,加上巨大的數組分配)時,CPU使用率猛增至50%。Java代碼的CPU使用率變化

我不認爲我做了與多線程相關的任何事情。另外,如果我稍微修改第一部分(非常簡單,如添加另一個for循環),CPU使用率也會有很大差異。這是爲什麼發生?有點好奇誰在使用CPU消耗。

+0

每個CPU 10%或一組CPU中的10%。頂級/任務管理器說消耗CPU的是什麼? –

+0

@CharlesForsythe Java(TM)Platform SE二進制文件是我在說 – turtlesoup

+0

這不是我問的。當JVM使用10%的CPU時,是單個CPU的10%還是所有CPU的10%?其他進程正在使用剩餘的CPU容量? –

回答

0

這不一定是您的代碼正在運行和CPU使用率之間的直接比較,因爲JVM會根據當前時間點堆中的內容來波動CPU使用率,同時管理垃圾回收。如果它突然上升到50%,那麼這可能是巧合,因爲垃圾收集同時開始。

0

通過運行位於jdk bin文件夾中的jvisualvm.exe,可以獲得更多詳細信息。我不確定有多少CPU使用信息可用,但至少有一些插件可以爲您提供CPU使用情況信息。根據david99world的回答,這也是查看堆使用情況的圖形方式。

http://visualvm.java.net/index.html