如何在Linux中找到由Java進程創建的前10個或前幾個CPU密集型線程堆棧跟蹤?我想知道花了多少時間以及如果可能的話如何在Linux中找到由Java進程創建的前10個或前幾個CPU密集線程?
回答
像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
。
也在Java 8中的Java飛行記錄器的任務控制是相當不錯的。 +1 –
@PeterLawrey當然也會檢查。感謝upvote :) –
它是一個開源項目,可能會對你的結果造成巨大的損失,因此我仍然建議你對它進行一下檢查。您可以嘗試15天免費評估yourkit。 –
Naw,yourkit的體重很重,它不是免費的,它不夠簡單,只需在命令行輸入一些內容並找出發生了什麼。你的意思是巨大的懲罰?迄今爲止工作很好。就像我說的那樣,這些是使開發人員生活更輕鬆的工具。 – user1870400
我並不反對開源工具,事實上我自己也使用了大量的開源技術和工具。任何分析工具都會在應用程序上施加一些懲罰,以報告統計數據。但企業版本將有更多的機會減少罰款和準確的結果。正如我所說的,你可以免費使用yourkit的試用版,只需交叉檢查結果。 –
- 1. Linux Shell - 查找前k個進程
- 2. 如何找到當前線程運行的cpu,Mac和BSD?
- 3. 如何在一個進程中查找單個線程的CPU利用率
- 4. 在java中創建一個進程中的線程
- 5. 如何找到哪個線程當前擁有在java中的鎖
- 6. 在C++中創建一個Linux進程
- 7. 質子CEP在不到10個小時內創建了幾百個進程
- 8. 如何確定一個進程是在java或c或c + +進程在Linux?
- 9. 如何在linux中創建進程
- 10. 前叉:進程數創建
- 11. Android - 如何找出當前線程的創建地點?
- 12. C++ - 如何找出當前線程創建的位置?
- 13. 如何用Java創建一個進程
- 14. 在Java中創建兩個線程
- 15. C#:找到當前進程
- 16. windows api:如何在當前進程中找到活動線程數?
- 17. 創建幾個線程後Pthread_create失敗
- 18. 如何在Drupal中創建前10個節點列表
- 19. 如何在boost中找到當前正在運行的線程?
- 20. cpu密集任務的子進程?
- 21. Java:如何在ArrayList中找到前10個最常見的String +頻率?
- 22. 在一個CPU上運行Java線程
- 23. 如何從Java中的100個線程一次運行10個線程?
- 24. 在每個主機線程上創建一個cuda流(多線程CPU)
- 25. 如何僅在當前用戶的進程中找到進程的命令行
- 26. 如何找出Java中的java進程的CPU使用情況
- 27. Java - 我如何從多個線程獲得或創建連接
- 28. 如何確保線程在另一個線程之前啓動?
- 29. 在當前jar中創建java進程來執行類
- 30. 找到哪個進程在linux中產生另一個進程的方法?
你將不得不使用標準的Linux工具來做到這一點,Java沒有CPU使用的概念,得到下面的信息。然後可以將線程ID與Java中的線程轉儲進行匹配以獲取堆棧跟蹤。 – john16384
我聽說有一些新的工具,雖然我不確定 – user1870400