對於我使用JVMTI執行的分析器,我想開始測量所有Java方法的執行時間。該JVMTI提供的事件:使用JVMTI測量Java的執行時間
啓用方法:
MethodEntry
MethodExit
因此,這將是很容易實現,但是我碰到這個note API中來進入或退出事件將顯着降低許多平臺的性能,因此不建議用於性能關鍵用途(例如性能分析)。在這些情況下應該使用字節碼檢測。
但是我的分析代理工作無頭,這意味着收集的數據被序列化並通過套接字發送到顯示結果的服務器應用程序。我應該如何使用字節碼檢測來實現這一點。我有點困惑如何從這裏繼續。有人能向我解釋,如果我必須改變策略,或者我該如何解決這個問題?
聽起來你想創建你自己的分析器。我建議你看看現有的配置文件如何工作,如VisualVM和YourKit工作,看看他們是否不做你已經需要的。 – 2011-05-11 10:47:55
他們這樣做,我只是想自己做。但VisualVM可能是一個暗示,看看他們是怎麼做的,但我的教育猜測是他們使用Java代理而不是本地代理。 – 2011-05-11 10:57:23
VisualVM使用可以獲取源代碼的Java代理。 YourKit使用您無法獲取源代碼的本地代理。記錄數據並不像獲得正確的數據可視化那麼難。我會看看YourKit如何實現其可視化。 – 2011-05-11 10:58:42