2013-09-01 43 views
15

使用VisualVM分析應用程序的CPU時間時,可以在拍攝快照後看到「調用樹」選項卡。但在我的情況下,調用樹只顯示一些RMI TCP類和方法,但沒有我的應用程序的單一類。如何在VisualVM中顯示調用樹?

如何顯示正確的呼叫樹?

enter image description here

回答

9

可能性

  1. 設置不包括你的類的探查。更改Profiler設置中的排除項。
  2. 您的應用程序在分析器運行時處於空閒狀態。連接分析器,然後讓程序執行你想要分析的代碼。
  3. 您可能正在分析錯誤的JVM。 RMI使得調用另一個JVM變得非常容易。也許你需要分析RMI連接的另一端。

「探查器」選項卡上有一個「設置」複選框。如果您選中設置框,將顯示另一個面板,您可以配置探查器收集數據的相關類。

下面是截圖。 screeshot of jvisualvm with Profiler "Settings" box checked.

+0

感謝您的設置提示。如果我點擊複選框,我會看到配置文件類,但我不允許更改它們。文本框不可編輯。我如何編輯它們? –

+0

好的,明白了。必須停止分析以編輯設置。設置正確的類後,我可以看到我的應用程序的正確調用樹。 –

0

調用樹只顯示線程採樣/分析其間真正跑(不睡覺所有的時間),其堆棧跟蹤的不是那些過濾掉全部。在開始採樣或分析之前設置過濾器。當啓用右上角的「設置」複選框時,您可以設置過濾器。在採樣器的情況下,您還可以設置採樣頻率,這是性能與風險之間的折衷,以監控線程的運行狀態。但可能是在分析過程中,您的應用程序真的很空閒。然後,您看到的唯一線程是維護與VisualVM的連接的RMI線程。

2

正如@Holger所說,剖析器/採樣器的快照應該只顯示正在運行的線程。 但是,我個人的經驗發現,採樣快照有時會顯示更多線程來描述性能分析。

此外,VisualVM的採樣器使您能夠實時查看每個線程的CPU時間(無需拍攝快照),無論它是否正在運行,休眠,等待或監視。

我不明白爲什麼會發生這種情況,因爲分析應該比採樣(see here the difference)更準確,但它確實如此。

總而言之,我建議您嘗試一下采樣器,看看它是否有效。

+0

謝謝。是的,抽樣幫助和抽樣我可以看到我想看到的呼叫樹。 –