外部工具給我帶來麻煩。有沒有辦法獲得簡單的CPU使用/每個功能花費的時間,而不使用一些外部GUI工具?我一直試圖用VisualVM來剖析我的java程序,但是我有可怕的,靈魂壓碎,野心殺人的結果。它只會顯示堆使用情況,我感興趣的是CPU使用情況,但該面板只是表示不支持此JVM。順便說一下,不會告訴我使用哪個JVM。我已經下載了JDK 6並使用它來啓動它,我確保我的程序針對同一個虛擬機,但沒有任何東西!仍然是一樣的,無益的錯誤信息。 我的需求非常簡單。我只想知道節目花在哪裏。 Python有一個很好的內置分析器,可以打印每個函數花費的時間,包括每次調用和總時間格式。這是我現在正在尋找的範圍。任何人有任何建議?有沒有辦法在不使用外部工具的情況下剖析java應用程序?
1
A
回答
2
這並不美觀,但您可以使用內置hprof分析機制,方法是在命令行中添加一個開關。
-Xrunhprof:cpu=times
有很多選擇可用;有關更多信息,請參閱HPROF的Oracle文檔頁面。
因此,舉例來說,如果你有你想剖析一個可執行的JAR,您可以鍵入:
java -Xrunhprof:cpu=times -jar Hello.jar
當運行完成後,你就會有一個名爲「Java中的(大)的文本文件。 hprof.txt」。
該文件將包含有趣的一堆數據,但你正在尋找的部分是開始部分:
CPU TIME (ms) BEGIN (total = 500) Wed Feb 27 16:03:18 2013
rank self accum count trace method
1 8.00% 8.00% 2000 301837 sun.nio.cs.UTF_8$Encoder.encodeArrayLoop
2 5.40% 13.40% 2000 301863 sun.nio.cs.StreamEncoder.writeBytes
3 4.20% 17.60% 2000 301844 sun.nio.cs.StreamEncoder.implWrite
4 3.40% 21.00% 2000 301836 sun.nio.cs.UTF_8.updatePositions
或者,如果你不這樣做的話,我會嘗試安裝VisualVM-Extensions,VisualGC,Threads Inspector以及至少Swing,JVM,Monitor和Jvmstat示蹤探針。
前往工具 - >插件來安裝它們。如果你需要更多的細節,評論,我會進一步擴展這個答案。
+0
Arg ..我不明白。我嘗試過使用你的建議,以及你鏈接的父親的一些建議,並且它所說的所有內容都是'通過對正在運行的線程進行採樣來完成CPU的使用情況。 – 2013-02-27 21:51:26
相關問題
- 1. 有沒有辦法在不使用MSI的情況下部署.Net應用程序?
- 2. 如何剖析Java應用程序的一部分內存使用情況?
- 3. 是否有可能在沒有prof庫的情況下剖析Haskell程序?
- 4. 有沒有辦法在沒有數據庫的情況下將數據保存在Java EE應用程序中?
- 5. 在沒有Xcode的情況下部署iOS應用程序?
- 6. 在沒有Visualforce的情況下部署salesforce.com flex應用程序
- 7. 在沒有遷移的情況下部署rails應用程序
- 8. 有沒有辦法在不使用選擇器的情況下響應UIButton tap?
- 9. 在沒有Java的情況下創建Android應用程序
- 10. 在沒有外部工具的情況下在java中記錄HTTP通信
- 11. 在沒有MVC應用程序的情況下使用模型
- 12. 有沒有辦法在不使用windows phone 7 marketplace的情況下發布windows phone 7應用程序?
- 13. 有沒有什麼辦法可以在不使用Appstore和adhoc發佈的情況下發布應用程序?
- 14. 如何在沒有外部依賴的情況下創建wxWidgets應用程序?
- 15. qt - 如何在沒有崩潰的情況下打開外部應用程序
- 16. 有沒有辦法在未經批准的情況下將Phonegap構建應用程序部署到遠程iOS
- 17. 在沒有服務器應用程序的情況下部署java web服務
- 18. 有沒有辦法在沒有外部庫的情況下在Java中處理DBF文件?
- 19. 我可以在沒有外部工具的情況下守護golang進程嗎?
- 20. 有沒有辦法在沒有QApplication :: exec()的情況下使用Qt?
- 21. 有沒有辦法在沒有使用WMI的情況下管理Microsoft DNS?
- 22. 基於Java的Web應用程序的剖析工具
- 23. 有沒有辦法在沒有DNS的情況下解決nginx上的多個應用程序?
- 24. 有沒有辦法在沒有USB連接的情況下調試手機上的android應用程序?
- 25. 有沒有辦法在不使用TimePickerDialog的情況下獲取TimePicker的時間?
- 26. 如何在不使用模塊的情況下剖析子程序?
- 27. 有沒有辦法在沒有Visual Studio 2008 Pro的情況下演示/測試Windows Mobile應用程序
- 28. 用於具有非常高的CPU的mvc應用程序剖析工具
- 29. 有沒有辦法在不首先聲明變量的情況下使用preg_match_all?
- 30. 有沒有辦法在不使用onNewIntent的情況下獲得NFC UID?
我沒有看到任何方式讓你做這個***沒有***外部工具。你真的只是在尋找那個,或者只是建議那些會做你所問的,不是VisualVM的人嗎? – sharakan 2013-02-27 21:04:08
@sharakan - 好吧,我會解決什麼問題。我對'pythonic'有希望,其中'main()'是分析器的一個參數,然後它簡單地執行程序並打印出結果,但如果這樣的事情不存在,我可以接受建議無論什麼作品。 – 2013-02-27 21:07:52
使用visualvm插件可能的解決方法:http://stackoverflow.com/questions/1755819/cpu-and-profiling-not-supported-for-remote-jvisualvm-session – sharakan 2013-02-27 21:21:14