2017-02-25 36 views
2

如何在Linux中找到由Java進程創建的前10個或前幾個CPU密集型線程堆棧跟蹤?我想知道花了多少時間以及如果可能的話如何在Linux中找到由Java進程創建的前10個或前幾個CPU密集線程?

+1

你將不得不使用標準的Linux工具來做到這一點,Java沒有CPU使用的概念,得到下面的信息。然後可以將線程ID與Java中的線程轉儲進行匹配以獲取堆棧跟蹤。 – john16384

+0

我聽說有一些新的工具,雖然我不確定 – user1870400

回答

1

top這樣的標準linux工具只會提供頂級進程,而這些進程會佔用最多的CPU。但不能說明單個java process內的所有線程佔用了大部分CPU。

你需要一個像YourKit一個分析工具,以確定在java程序什麼的線程佔用了大部分的CPU,你可以啓用yourkit基於跟蹤採樣,甚至得到一個方法的invocation count爲好。

請參閱https://www.yourkit.com/docs/java/help/cpu_intro.jsp doc,瞭解如何使用yourkit開始使用CPU profiling

+0

也在Java 8中的Java飛行記錄器的任務控制是相當不錯的。 +1 –

+0

@PeterLawrey當然也會檢查。感謝upvote :) –

0

這很簡單,容易。它的工作!在Java中我們需要更多這樣的工具。

https://github.com/patric-r/jvmtop

您可以通過使用一個命令jvmptop.sh <pid>

enter image description here

+0

它是一個開源項目,可能會對你的結果造成巨大的損失,因此我仍然建議你對它進行一下檢查。您可以嘗試15天免費評估yourkit。 –

+0

Naw,yourkit的體重很重,它不是免費的,它不夠簡單,只需在命令行輸入一些內容並找出發生了什麼。你的意思是巨大的懲罰?迄今爲止工作很好。就像我說的那樣,這些是使開發人員生活更輕鬆的工具。 – user1870400

+0

我並不反對開源工具,事實上我自己也使用了大量的開源技術和工具。任何分析工具都會在應用程序上施加一些懲罰,以報告統計數據。但企業版本將有更多的機會減少罰款和準確的結果。正如我所說的,你可以免費使用yourkit的試用版,只需交叉檢查結果。 –

相關問題