TPTP全稱Test and Performance Tools Platform, 在你的應(yīng)用正式進入生產(chǎn)系統(tǒng)之前,我們都用用類似的工具來測試我們的系統(tǒng),找到影響性能的熱點(hot spot), 內(nèi)存益處,io block, 線程等等問題.
使用TPTP, 第一步要做得當然是下載TPTP, 我建議大家下載All-in-One, 這樣省去了很多繁瑣的plug-in的安裝。
TPTP運行有兩種模式, 一種是在TPTP的workbench里,一種是通過JVMPI(類似JVMDI, 遠程調(diào)試的模式), 第一種需要你的項目導(dǎo)入到TPTP里, 第二種模式,你可以很隨意的在命令行運行你的程序,通過JVMPI(或者JVMTI)將你的JVM attach 到TPTP, 來進行調(diào)試
這里有幾個名詞你可能比較陌生,JVMPI, JVMDI, JVMTI, 我在前面已經(jīng)加了鏈接, 你需要了解一下,值得關(guān)注的是JVMPI, JVMDI, 在JDK6里已經(jīng)不存在了, 所以如果你的應(yīng)用是基于JDK6的,那么你啟動應(yīng)用的JVMARG是不同的.
在4.4之前,通過JVMPI,你需要下載單獨運行的Agent Controller, 但是4.4以后,你不再需要了,agent是自動啟動的, 你會發(fā)現(xiàn)在你打開了"profiler..."對話框后,系統(tǒng)多了一個ACServer的進程
我很少使用Eclipse 來做開發(fā),所以我的代碼都不是Eclipse的項目,所以我重點介紹如何用第二種方式來進行調(diào)試
這里需要分JDK, 不同JDK版本,應(yīng)用的啟動方式是不同的,如果你用的是JDK5和JDK5之前的版本, 那么在JVMArgu 里需要加入這樣的參數(shù):
-XrunpiAgent:server=enabled
如果是JDK5之后的版本,你必須使用JVMTI的接口, JVMPI已經(jīng)被刪除了(而且你需要添加一個端口10006), 那么你的JVM參數(shù)是這樣的:
-agentlib:JPIBootLoader=JPIAgent:server=enabled;CGProf
事實上server的模式除了enable 以外,還有另外兩種, 一種是standalone, 也是說,這種模式會產(chǎn)生一個log 文件,默認名字是trace.trcxml, 你可以將這個文件導(dǎo)入TPTP來分析
-agentlib:JPIBootLoader=JPIAgent:server=standalone,file=log.trcxml;CGProf
還有一種是Controlled , 具體的用法可以參考手冊
在4.3之后,TPTP支持自動發(fā)現(xiàn),只要你刷新Agent, TPTP 會自動發(fā)現(xiàn)你的JVM
但是不管哪種模式,你都必須設(shè)置環(huán)境變量
a) Set TPTP_AC_HOME=>
b) Set JAVA_PROFILER_HOME=%TPTP_AC_HOME%pluginsorg.eclipse.tptp.javaprofiler
c) Set PATH=%JAVA_PROFILER_HOME%;%PATH%;%TPTP_AC_HOME%bin
d) Set PATH=%PATH%;%JAVA_HOME%bin
否則你將得到下面的錯誤信息:
[java] Error occurred during initialization of VM
[java] Could not find agent library on the library path or in the local dir
ectory: JPIBootLoader