1
我只是試圖用jvisualvm來剖析一個相對簡單的java程序。結果有點奇怪:小四線方法的自我時間最多,比其他任何方法都多!奇怪的分析器結果
public class Hub
public void clock() {
for (int i = 0; i < cogs.length; i++) {
cogs[i].clock(cnt, i, this);
}
cnt++;
}
}
注意:在這種情況下,cogs.length是8!
這很奇怪,因爲Cog.clock方法相當大!唯一合理的解釋我能想出的事實是,大多數(在這種情況下,8 6)齒軌對象將處於「停止」狀態,這被逮住這樣的:
public class Cog
public void clock(int cnt, int cogid, Hub hub) {
if (state == State.STOP)
return;
//long code goes here
}
}
但是,這不應該」沒有那麼大的影響!這裏是證明一個畫面:
你打了幾次'clock()'?代碼的其餘部分在哪裏? –
我修改了Hub.clock和Cog.clock之間的區別。基本上,Hub.clock被無限循環調用,然後調用所有Cog對象的時鐘。 –
我不太相信Profiler。測量影響執行並存在許多問題。如果總運行時間真的只有10毫秒,那麼你可以忘記它; JVM需要更多的來正確地優化一切。如果你沒有遇到速度問題,那麼你可以忽略它(認爲我也很好奇這裏是什麼東西)。否則,請進行較長時間的測量併發布結果。 – maaartinus