我正在使用YourKit和JProfiler中的採樣性能分析功能來分析程序,並且還「手動」(我啓動它並按Ctrl-Break幾次以獲取線程轉儲)。奇怪的性能分析結果:絕對不會出現瓶頸方法
這三種方法都給我帶來了極其奇怪的結果:在3線方法中花費了幾十個百分點的時間,即使不進行任何分配或同步也沒有循環等。這個方法變成了一個NOP,甚至完全刪除了它的調用,可觀察的程序性能根本沒有改變(雖然它獲得了可忽略的內存泄漏,因爲它是一種釋放廉價資源的方法)。
我在想,這可能是因爲JVM放在線程的堆棧跟蹤時刻的約束,而且它在某種程度上證明了在我的程序中它恰好是調用此方法的時刻儘管對它或者它所調用的上下文沒有特別的要求。
什麼可以解釋這種現象? 上述約束是什麼? 我可以採取哪些進一步措施來澄清情況?
你能發佈具體信息嗎? – 2010-05-07 12:52:05
@Jeff哪些? – jkff 2010-05-07 12:59:20
也許探查器結果的快照開始 – 2010-05-07 13:12:43