2013-06-11 42 views
3

我已經開始使用visualvm來分析我在Eclipse中啓動的應用程序。然後我啓動visualvm,最初給出可信的結果。瞭解visualvm分析器中的CPU時間

enter image description here

一段時間後,兩個進程出現在其中耗費大量的時間顯示器。

enter image description here

我沒有刻意調用這些。過了一段時間,他們消失了。它們是剖析過程的人造物嗎?我需要擔心嗎?

我的例程很少出現在配置文件中,主要是它們調用的庫。有沒有辦法顯示哪些程序調用最常用的程序?

回答

7

如果您不知道哪部分代碼很慢,最好從CPU採樣開始。一旦你知道更好的(基於採樣結果)發生了什麼事情,你可以簡單地描述一下你的應用程序的一部分,這很慢。您需要設置分析根和儀器過濾器,並且不要忘記拍攝收集結果的快照。請參閱Profiling With VisualVM, Part 1Profiling With VisualVM, Part 2以獲取有關概要分析以及如何設置概要分析根和儀器過濾器的更多信息。

+0

+1我最終在這裏找到了我的方式! –

3

VisualVM使用Java來執行它的工作。這意味着您將看到一些與其製作的RMI調用相關的文物。你可以忽略它們。

我用YourKit不這樣做,但它不是免費的;)

+1

+1大概我提到的兩個都與RMI –

+0

最有可能相關。如果線程池不是,它仍然可能可以忽略它。例如空閒的線程池可能看起來像是一個分析器消耗CPU(它沒有像建議的那樣使用太多) –

1

的VisualVM將跟蹤由Java程序是監視被調用的所有方法,所以無論你的程序或它的圖書館之一是呼籲那些方法。 VisualVM也連接到它,所以可能會有一些小的文物。

至於搜索,最簡單的方法可能是用你自己的軟件包進行過濾。底部有一個空格,您可以輸入這些空格,以便查看您自己的哪些方法真的需要時間。你也應該注意你所在的線程,通常你會想看看你的「主」線程。其他線程很有趣,但並不總是能夠讓您瞭解程序的行爲方式。

+0

+1會嘗試這個。我只有一個主線程(至少是我自己的) –