JProfiler測(cè)試RCP教程
一、下載、注冊(cè):
1、下載:我們可以從JProfiler的官方網(wǎng)站下載到最新版本的JProfiler,我用的是目前最新版JProfiler6。
下載地址:http://www.ej-technologies.com/products/jprofiler/overview.html
2、注冊(cè):在官方網(wǎng)站上當(dāng)我們確定了下載的版本后會(huì)出現(xiàn)如下界面:
我們添寫對(duì)應(yīng)的信息后,網(wǎng)站會(huì)將注冊(cè)碼發(fā)送到你所添寫的郵箱當(dāng)中,打開郵箱便可獲得一個(gè)免費(fèi)使用10天的Key碼,10天后Key碼便不可用,我們得重復(fù)上述方法重新申請(qǐng)Key碼。
、JProfiler主要功能簡介:
1.內(nèi)存剖析 Memory profiler
JProfiler 的內(nèi)存視圖部分可以提供動(dòng)態(tài)的內(nèi)存使用狀況更新視圖和顯示關(guān)于內(nèi)存分配狀況信息的視圖。所有的視圖都有幾個(gè)聚集層并且能夠顯示現(xiàn)有存在的對(duì)象和作為垃圾回收的對(duì)象。
- 所有對(duì)象
顯示類或在狀況統(tǒng)計(jì)和尺碼信息堆上所有對(duì)象的包。你可以標(biāo)記當(dāng)前值并顯示差異值。
- 記錄對(duì)象 Record objects
顯示類或所有已記錄對(duì)象的包。你可以標(biāo)記出當(dāng)前值并且顯示差異值。
- 分配訪問樹 Allocation call tree
顯示一棵請(qǐng)求樹或者方法、類、包或?qū)σ堰x擇類有帶注釋的分配信息的J2EE組件。
- 分配熱點(diǎn) Allocation hot spots
顯示一個(gè)列表,包括方法、類、包或分配已選類的J2EE組件。你可以標(biāo)注當(dāng)前值并且顯示差異值。對(duì)于每個(gè)熱點(diǎn)都可以顯示它的跟蹤記錄樹。
2.堆遍歷 Heap walker
在JProfiler的堆遍歷器(Heap walker)中,你可以對(duì)堆的狀況進(jìn)行快照并且可以通過選擇步驟下尋找感興趣的對(duì)象。堆遍歷器有五個(gè)視圖:
- 類 Classes
顯示所有類和它們的實(shí)例。
- 分配 Allocations
為所有記錄對(duì)象顯示分配樹和分配熱點(diǎn)。
- 索引 References
為單個(gè)對(duì)象和“顯示到垃圾回收根目錄的路徑”提供索引圖的顯示功能。還能提供合并輸入視圖和輸出視圖的功能。
- 數(shù)據(jù) Data
為單個(gè)對(duì)象顯示實(shí)例和類數(shù)據(jù)。
- 時(shí)間 Time
顯示一個(gè)對(duì)已記錄對(duì)象的解決時(shí)間的柱狀圖。
3.CPU 剖析 CPU Views
JProfiler 提供不同的方法來記錄訪問樹以優(yōu)化性能和細(xì)節(jié)。線程或者線程組以及線程狀況可以被所有的視圖選擇。所有的視圖都可以聚集到方法、類、包或J2EE組件等不同層上。CPU視圖部分包括:
- 訪問樹 Call tree
顯示一個(gè)積累的自頂向下的樹,樹中包含所有在JVM中已記錄的訪問隊(duì)列。JDBC,JMS和JNDI服務(wù)請(qǐng)求都被注釋在請(qǐng)求樹中。請(qǐng)求樹可以根據(jù)Servlet和JSP對(duì)URL的不同需要進(jìn)行拆分。
- 熱點(diǎn) Hot spots
顯示消耗時(shí)間最多的方法的列表。對(duì)每個(gè)熱點(diǎn)都能夠顯示回溯樹。該熱點(diǎn)可以按照方法請(qǐng)求,JDBC,JMS和JNDI服務(wù)請(qǐng)求以及按照URL請(qǐng)求來進(jìn)行計(jì)算。
- 訪問圖 Call graph
顯示一個(gè)從已選方法、類、包或J2EE組件開始的訪問隊(duì)列的圖。
4.線程剖析 Thread profiler
對(duì)線程剖析,JProfiler提供以下視圖:
- 線程歷史 Thread history
顯示一個(gè)與線程活動(dòng)和線程狀態(tài)在一起的活動(dòng)時(shí)間表。
- 線程監(jiān)控 Thread monitor
顯示一個(gè)列表,包括所有的活動(dòng)線程以及它們目前的活動(dòng)狀況。
- 死鎖探測(cè)圖表 Deadlock Detection
顯示一個(gè)包含了所有在JVM里的死鎖圖表。
- 目前使用的監(jiān)測(cè)器 Current monitor useage
顯示目前使用的監(jiān)測(cè)器并且包括它們的關(guān)聯(lián)線程。
- 歷史檢測(cè)記錄 History usage history
顯示重大的等待事件和阻塞事件的歷史記錄。
- 監(jiān)測(cè)使用狀態(tài) Monitor usage statistics
顯示分組監(jiān)測(cè),線程和監(jiān)測(cè)類的統(tǒng)計(jì)監(jiān)測(cè)數(shù)據(jù)。
5.VM 遙感勘測(cè)技術(shù) VM telemetry
觀察JVM的內(nèi)部狀態(tài),JProfiler提供了不同的遙感勘測(cè)視圖,如下所示:
- 堆 Heap
顯示一個(gè)堆的使用狀況和堆尺寸大小活動(dòng)時(shí)間表。
- 記錄的對(duì)象 Recorded objects
顯示一張關(guān)于活動(dòng)對(duì)象與數(shù)組的圖表的活動(dòng)時(shí)間表。
- 垃圾回收 Garbage collector
顯示一張關(guān)于垃圾回收活動(dòng)的活動(dòng)時(shí)間表。
- 類 Classes
顯示一個(gè)與已裝載類的圖表的活動(dòng)時(shí)間表。
線程 Threads
顯示一個(gè)與動(dòng)態(tài)線程圖表的活動(dòng)時(shí)間表。
三、JProfiler如何測(cè)試RCP程序
1、啟動(dòng)JProfiler5.1.4后會(huì)出現(xiàn)“Quick Start”窗口,如圖:
在這里我們要選擇要測(cè)試程序的類型,我們選擇第二項(xiàng),單擊“Next”,進(jìn)入“Session Settings”配置窗口。
2、Session Settings的窗口的配置
運(yùn)行界面如圖:
此窗口共有四個(gè)選項(xiàng)卡,通常情況下我們只需添寫“Application Settings”中的相關(guān)信息,其中:
Session name:此次測(cè)試的名字,可任意添寫。
Session Type:測(cè)試程序的類型(Local:本地程序、Remote:遠(yuǎn)程程序、Applet:JAVA小程序、Web Start:Web程序)
Java VM:本地機(jī)的所安裝的jre版本。
Working dirctory:工作區(qū)目錄。
注:由于本次要測(cè)試的為RCP程序,因此要先將RCP程序打包發(fā)行,這里的工作區(qū)目錄本例來說是RCP發(fā)行后的主目錄。
Main class or executable JAR:程序的主類或JAR包,當(dāng)我們將RCP程序打包發(fā)行后,會(huì)自動(dòng)生成一個(gè)startup.jar的文件,此處添寫startup.jar的完整路徑。
另外,在下方的“Java File Path”一欄中還需要添加程序源代碼路徑和類路徑,如果不添寫,在測(cè)試時(shí)便無法查看源代碼。一切都添好了,單擊“OK”。
3、Evaluation Version窗口
此窗口是用來對(duì)你使用的JProfiler的版本進(jìn)行評(píng)估,通知你版本的使用期限,如圖所示:
這里我們不用管它,直接單擊“Evaluate”,出現(xiàn)“Session Startup”窗口如圖所示:
這里顯示了此次測(cè)試的一些配置信息,不用管理它,單擊“OK”,此時(shí)將會(huì)啟動(dòng)要測(cè)試的程序,我測(cè)試的程序是“PDM數(shù)據(jù)管理系統(tǒng)”運(yùn)行介面如下:
4、執(zhí)行“PDM數(shù)據(jù)管理系統(tǒng)”,執(zhí)行“PDM數(shù)據(jù)管理系統(tǒng)”中的查詢操作后,JProfiler顯示的界面如圖所示:
Aggregation level:顯示的方式,我們這里選“pacakge”,圖中的“cn.com.panyang.pmanager.model”是我編寫程序時(shí)手動(dòng)創(chuàng)建的包,第二列“Instance count”代表程序執(zhí)行的次數(shù)。
接下來標(biāo)記現(xiàn)在的狀態(tài),界面如圖:
然后再執(zhí)行一次“PDM數(shù)據(jù)管理系統(tǒng)”中的查詢操作(查詢條件與先前的不一致),界面變?yōu)椋?/span>
紅色表示發(fā)生變化的對(duì)象及變化數(shù)量,其中的2142表示兩次執(zhí)行的次數(shù)總和,第三列的Difference 表示兩次之間發(fā)生變化的數(shù)量。現(xiàn)在按F4進(jìn)行垃圾回收,幾秒鐘后我們會(huì)發(fā)現(xiàn),一些類的紅色不見了,證明垃圾回收得很徹底。但是,還有一些仍然存在紅色區(qū)域,說明某些地方對(duì)這個(gè)類的引用沒有被釋放,然后我們可以以此為依據(jù)對(duì)代碼進(jìn)行初步優(yōu)化。
5、查看方法消耗的時(shí)間
在進(jìn)行完以上的操后我們可以點(diǎn)擊窗口左邊的“CPU Views”,再點(diǎn)擊右側(cè)窗口的“Hot Spots”標(biāo)簽來查看程序運(yùn)行時(shí)每個(gè)方法的消耗時(shí)間和CPU占用比,如圖:
我們可以通過此圖,將最耗時(shí)和CPU占用大的代碼段進(jìn)行優(yōu)化,縮短程序的運(yùn)行時(shí)間,從而達(dá)到對(duì)系統(tǒng)性能的提高。