2012-10-23 70 views
1

VisualVM向我展示了一種特殊的方法需要很長時間才能執行。調試慢Java方法

是否有任何廣泛使用的策略來查看Java方法的性能(關於時間)?

我的直覺是,遲緩的響應時間將來自於VisualVM正在報告的調用層次結構之下的某個方法,但我認爲在基於假設的代碼中捕獲一些硬數字要好一些當涉及到性能。

+0

VisualVM不是通過方法組織時間,而是通過完整的調用堆棧來組織時間,因此您總是可以深入查看使其調用者消耗時間的方法調用。 –

回答

2

VisualVM應該向您展示使用最多CPU的方法。如果最大的用戶是你的方法,這意味着它不是你調用的方法,除非你調用了許多個別地看起來很小但總體上更多的方法。

我建議你採取這種方法調用的方法和你的總和的區別。那是你的方法加入了多少分析。注意:未分析時添加的分量可能會少於分析器的開銷。

+0

嗨,彼得。感謝您的評論,但我並不完全確定您的意思是「個別地看起來很小但總體上更多」的方法,以及「我建議您採用這種方法調用的方法與您的總體的區別」。 – csilk

+0

在方法中花費的時間可以包括其調用的所有方法。如果methodA調用methodB和methodC,並且這些需要10秒,2秒和3秒,則方法A正在添加10 - 2 - 3 = 5秒。 –

+0

所有方法執行時間的總和就是我正在使用的度量。 – csilk

1

你需要使用像JProfiler,Yourkit等工具。你可以簡介你的代碼深入&你可以準確捕捉哪種方法花費很多時間。您可以使用這些工具儘可能深入地分析層次結構。