JProfiler是一個(gè)全功能的Java剖析工具(profiler),專用於分析J2SE和J2EE應(yīng)用程式。它把CPU、線程和記憶體的剖析組合在一個(gè)強(qiáng)大的應(yīng)用中。JProfiler可提供許多IDE整合和應(yīng)用服務(wù)器整合功能。JProfiler直覺式的GUI讓你可以找到性能瓶頸、抓住內(nèi)存泄漏(memory?leaks)、并解決多線程的問題。它讓你得以對heap?walker作資源回收器的root?analysis,可以輕易找出內(nèi)存泄漏;heap快照(snapshot)模式讓未被引用(reference)的對象,?稍微被引用的對象、或在終結(jié)(finalization)序列的對象都會(huì)被移除;整合精靈以便剖析瀏覽器的Java外掛功能。
下載地址:
http://download.ej-technologies.com/jprofiler/jprofiler_windows_4_2_2.exe
解密過程:
將EJ[1].Technologies.JProfiler.v4.2.2.Incl.Keymaker-AGAiN壓縮包中的jkgone.jar解壓到
根目錄或其它目錄下運(yùn)行如下命令.
java?-jar?jkgone.jar
附其它版本的注冊碼
http://download.ej-technologies.com/jprofiler/jprofiler_windows_3_3_1.exe
JProfiler?4.0
Name?and?Company:?anything?s/n:?A-G666#76114F-1olm9mv1i5uuly#0126
JProfiler?3.3.1
s/n:?A-XiV7#20128F-1nf9r2z1qepp2e#7120
EJ?Technologies?JProfiler?2.2.1?
S/N:?A-DWP#OWNZ#YOU-212hyr?
JProfiler?3.3
S/N:?A-XiV6#62267F-1tfbcghardqqd#16312<br>
JProfiler?3.2.0
S/N:?A-GAiN#91584F-vd0mmz13mkf00#181013<br>or<br>A-GAiN#22031F-1giul8u16x7p65#121218<br>or<br>A-GAiN#98900F-1j62dw18rpusn#111117<br>
JProfiler?3.2
S/N:?A-GAiN#70503F-l7qte9gtq77c#81111<br>or<br>A-GAiN#19132F-y2fnayai9yu8#141420<br>
目前最新版為4.3,大家可以申請?jiān)囉?0天,如果大家還需要其它版本的注冊碼回復(fù)
官方試用版下載:
http://www.ej-technologies.com/download/jprofiler/trial.php?.
注冊文件下載地址:
http://lyh007.gbaopan.com/files/245c5ad31b314e4abd6bb1c54e86ebbe.gbp
由于G寶盤只能傳小于10MB文件,所以到主頁公布的郵箱進(jìn)行全部下載.
?
來自:http://www.anymobile.org
?
1、摘要..........................................................................1
2、改善服務(wù)器的性能...........................................................1
3、分析器原理...................................................................2
4、JProfiler 簡介...............................................................2
5、JProfiler 特征...............................................................3
6、本地監(jiān)控.....................................................................4
7、遠(yuǎn)程監(jiān)控.....................................................................7
8、參考..........................................................................9
?
?
1
、
摘要
?
???? ?
改善
Java
服務(wù)器的性能需要模擬負(fù)載下的服務(wù)器。創(chuàng)建一個(gè)模擬環(huán)境、搜集數(shù)據(jù)并且分析結(jié)果可能是對許多開發(fā)人員的挑戰(zhàn)。這篇文章介紹了使用
JProfiler
跟蹤分析
Java
服務(wù)器的性能。
?
簡單的性能問題很容易分離并解決,然而,大的性能問題,如內(nèi)存溢出或者系統(tǒng)的罷工,通常在系統(tǒng)處于高負(fù)載情況下發(fā)生,就不能這么簡單的處理了。這些問題需要一個(gè)獨(dú)立的測試環(huán)境、一個(gè)模擬的負(fù)載,并且需要仔細(xì)地分析和跟蹤。
?
在這篇文章中,我使用比較通用的工具(
JProfiler
和
JBuilder
)和設(shè)備創(chuàng)建了一個(gè)性能監(jiān)控分析環(huán)境,跟蹤本地和遠(yuǎn)程的服務(wù)器程序,專注于三個(gè)性能問題:內(nèi)存、垃圾回收和多線程運(yùn)行狀況,從而很好的監(jiān)視
JVM
運(yùn)行情況及其性能。
2
、改善服務(wù)器的性能
?
服務(wù)器的性能改善是依賴于數(shù)據(jù)的。沒有可靠的數(shù)據(jù)基礎(chǔ)而更改應(yīng)用或環(huán)境會(huì)導(dǎo)致更差的結(jié)果。分析器提供有用的
Java
服務(wù)器應(yīng)用信息,但由于從單用戶負(fù)載下的數(shù)據(jù)與多用戶負(fù)載下得到的數(shù)據(jù)是完全不同的,這導(dǎo)致分析器的數(shù)據(jù)并不精確。在開發(fā)階段使用分析器來優(yōu)化應(yīng)用的性能是一個(gè)好的方式,但在高負(fù)載下的應(yīng)用分析可以取到更好的效果。
在負(fù)載下分析服務(wù)器應(yīng)用的性能需要一些基本的元素:
1、?
可控的進(jìn)行應(yīng)用負(fù)載測試的環(huán)境。
2、?
可控的人造負(fù)載使得應(yīng)用滿負(fù)荷運(yùn)行。
3、?
來自監(jiān)視器、應(yīng)用和負(fù)載測試工具自身的數(shù)據(jù)搜集。
4、?
性能改變的跟蹤。
不要低估最后一個(gè)需求(性能跟蹤)的重要性因?yàn)槿绻荒芨櫺阅苣憔筒荒軐?shí)際的管理項(xiàng)目。性能上
10-20%
的改善對單用戶環(huán)境來說并沒有什么不同,但對支持人員來說就不一樣了。
20%
的改善是非常大的,而且通過跟蹤性能的改善,你可以提供重要的反饋和持續(xù)跟蹤。
雖然性能跟蹤很重要,但有時(shí)為了使后續(xù)的測試更加精確而不得不拋棄先前的測試結(jié)果。在性能測試中,改善負(fù)載測試的精確性可能需要修改模擬環(huán)境,而這些變化是必須的,通過變化前后的負(fù)載測試你可以觀察到其中的轉(zhuǎn)變。
3
、
分析器原理
?
現(xiàn)在幾乎所有的分析器都是從同一個(gè)起點(diǎn)和約束開始的:
Java
虛擬機(jī)分析器界面
(JVMPI) (
參考
"The Java Virtual Machine Profiler Interface")
。
Sun
微系統(tǒng)的
API
允許工具開發(fā)商接口或者連接到遵循
JVMPI
的
JVM
上,并且監(jiān)控運(yùn)作的方式以及
JVM
運(yùn)行任何
Java
程序時(shí)的關(guān)鍵事件
--
從單獨(dú)的應(yīng)用程序到
Applet
、
Servlet
和企業(yè)
JavaBeans (EJB)
組件。
?
在分析器內(nèi)啟動(dòng)一個(gè)程序意味著生成、捕捉、和觀察大量數(shù)據(jù),所以所有的分析器都包含著不同的方法來控制數(shù)據(jù)的流動(dòng),在不同的標(biāo)準(zhǔn)以及每一封裝包的基礎(chǔ)上進(jìn)行過濾。同樣
也可以使用靈活的正規(guī)表達(dá)式類型模式來完成。
是一個(gè)全功能的
Java
剖析工具(
profiler
),專用于分析
J2SE
和
J2EE
應(yīng)用程序。它把
CPU
、執(zhí)行緒和內(nèi)存的剖析組合在一個(gè)強(qiáng)大的
應(yīng)用中。
JProfiler
可提供許多
IDE
整合和應(yīng)用服務(wù)器整合用途。
JProfiler
直覺式的
GUI
讓你可以找到效能瓶頸、抓出內(nèi)存漏失
(memory?leaks)
、并解決執(zhí)行緒的問題。它讓你得以對
heap?walker
作資源回收器的
root?analysis
,可以輕易找出內(nèi)存溢出;
heap
快照(
snapshot
)模式讓未被參照(
reference
)的對象、稍微被參照的對象、或在終結(jié)(
finalization
)隊(duì)列的對象
都會(huì)被移除;整合精靈以便剖析瀏覽器的
Java
外掛功能。
目前最新的版本是
4.1.2
,幾乎支持所有常用的
IDE
和
Application Server
,可以到其
EJ
官方網(wǎng)站
http://www.ej-technologies.com/
下載,申請一個(gè)十天的試用注冊碼。
5
、
JProfiler
特征
5.1
內(nèi)存剖析
Memory profiler
JProfiler
的內(nèi)存視圖部分可以提供動(dòng)態(tài)的內(nèi)存使用狀況更新視圖和顯示關(guān)于內(nèi)存分配狀況信息的視圖。所有的視圖都有幾個(gè)聚集層并且能夠顯示現(xiàn)有存在的對象和作為垃圾回收的對象。?
-
所有對象
顯示類或在狀況統(tǒng)計(jì)和尺碼信息堆上所有對象的包。你可以標(biāo)記當(dāng)前值并顯示差異值。?
-
記錄對象 Record objects
顯示類或所有已記錄對象的包。你可以標(biāo)記出當(dāng)前值并且顯示差異值。?
-
分配訪問樹 Allocation call tree
顯示一棵請求樹或者方法、類、包或?qū)σ堰x擇類有帶注釋的分配信息的J2EE組件。 ?
-
分配熱點(diǎn) Allocation hot spots
顯示一個(gè)列表,包括方法、類、包或分配已選類的J2EE組件。你可以標(biāo)注當(dāng)前值并且顯示差異值。對于每個(gè)熱點(diǎn)都可以顯示它的跟蹤記錄樹。 ?
5.2
堆遍歷
Heap walker
?
在JProfiler的堆遍歷器(Heap walker)中,你可以對堆的狀況進(jìn)行快照并且可以通過選擇步驟下尋找感興趣的對象。堆遍歷器有五個(gè)視圖:?
-
類 Classes
顯示所有類和它們的實(shí)例。?
-
分配 Allocations
為所有記錄對象顯示分配樹和分配熱點(diǎn)。?
-
索引 References
為單個(gè)對象和“顯示到垃圾回收根目錄的路徑”提供索引圖的顯示功能。還能提供合并輸入視圖和輸出視圖的功能。?
-
數(shù)據(jù) Data
為單個(gè)對象顯示實(shí)例和類數(shù)據(jù)。?
-
時(shí)間 Time
顯示一個(gè)對已記錄對象的解決時(shí)間的柱狀圖。?
5.3 CPU
剖析
CPU profiler
?
JProfiler
提供不同的方法來記錄訪問樹以優(yōu)化性能和細(xì)節(jié)。線程或者線程組以及線程狀況可以被所有的視圖選擇。所有的視圖都可以聚集到方法、類、包或J2EE組件等不同層上。CPU視圖部分包括:?
-
訪問樹 Call tree
顯示一個(gè)積累的自頂向下的樹,樹中包含所有在JVM中已記錄的訪問隊(duì)列。JDBC,JMS和JNDI服務(wù)請求都被注釋在請求樹中。請求樹可以根據(jù)Servlet和JSP對URL的不同需要進(jìn)行拆分。?
-
熱點(diǎn) Hot spots
顯示消耗時(shí)間最多的方法的列表。對每個(gè)熱點(diǎn)都能夠顯示回溯樹。該熱點(diǎn)可以按照方法請求,JDBC,JMS和JNDI服務(wù)請求以及按照URL請求來進(jìn)行計(jì)算。?
-
訪問圖 Call graph
顯示一個(gè)從已選方法、類、包或J2EE組件開始的訪問隊(duì)列的圖。?
5.4
線程剖析
Thread profiler
?
對線程剖析,JProfiler提供以下視圖:
?
-
線程歷史 Thread history
顯示一個(gè)與線程活動(dòng)和線程狀態(tài)在一起的活動(dòng)時(shí)間表。?
-
線程監(jiān)控 Thread monitor
顯示一個(gè)列表,包括所有的活動(dòng)線程以及它們目前的活動(dòng)狀況。?
-
死鎖探測圖表 Deadlock Detection
顯示一個(gè)包含了所有在JVM里的死鎖圖表。?
-
目前使用的監(jiān)測器 Current monitor useage
顯示目前使用的監(jiān)測器并且包括它們的關(guān)聯(lián)線程。?
-
歷史檢測記錄 History usage history
顯示重大的等待事件和阻塞事件的歷史記錄。?
-
監(jiān)測使用狀態(tài) Monitor usage statistics
顯示分組監(jiān)測,線程和監(jiān)測類的統(tǒng)計(jì)監(jiān)測數(shù)據(jù)。?
5.5
VM
遙感勘測技術(shù)
VM telemetry
?
觀察JVM的內(nèi)部狀態(tài),JProfiler提供了不同的遙感勘測視圖,如下所示:
?
-
堆 Heap
顯示一個(gè)堆的使用狀況和堆尺寸大小活動(dòng)時(shí)間表。?
-
記錄的對象 Recorded objects
顯示一張關(guān)于活動(dòng)對象與數(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í)間表。 ?
6
、
本地監(jiān)控
系統(tǒng)環(huán)境
Windows OS
;軟件
JBuilderX/2005
和
JProfiler 4.1.2
1
、安裝
JBuilderX
和
JProfiler 4.1.2
2
、運(yùn)行
JProfiler
,
Session->
IDE integration tab, IDE
選擇Borland JBuilder7 to 2005,點(diǎn)擊Integrate按鈕,選擇JBuilder的安裝目錄,確認(rèn),會(huì)看到已經(jīng)將JProfiler以OpenTool的形式,成功整合到JBuilder中,見下圖。?
?
?
3
、運(yùn)行
JBuilder
,打開
Run->Configurations
,選擇或新建一個(gè)
Runtime
,在
Optimize
選項(xiàng)中就可以看到
JProfiler
,可以選擇每次運(yùn)行程序新建一個(gè)
JProfiler
窗口的提示設(shè)置。
4
、點(diǎn)擊
Optimize Project
按鈕,運(yùn)行程序。
5
、彈出如下的
JProfiler
窗口,確認(rèn)相關(guān)的信息即可。
6
、至此,就可以監(jiān)控本地服務(wù)器的各個(gè)方面的性能了。




7
、
遠(yuǎn)程監(jiān)控
服務(wù)器程序一般運(yùn)行在遠(yuǎn)程的服務(wù)器設(shè)備上,有時(shí)候我們還需要遠(yuǎn)程監(jiān)控商用的服務(wù)器資源。
服務(wù)器操作系統(tǒng)
Linux OS ,安裝步驟如下:
1、./jprofiler_linux_4_1_2.sh,出現(xiàn)如下提示:
testing JVM in /usr/jdk1.4 ...
Starting Installer ...
注:對于沒有安裝X Server的機(jī)器,需要執(zhí)行./jprofiler_linux_4_1_2.sh -q,否則會(huì)提示,
testing JVM in /usr/jdk1.4 ...
Starting Installer ...
This installer needs access to an X Server.
If this is not possible, you can run the installer in unattended mode
by passing the argument -q to the installer.
2、安裝完畢后,會(huì)在/opt目錄下,找到j(luò)profiler的安裝目錄,/opt/jprofiler4。
本地操作系統(tǒng)
WindowXP
,相關(guān)的配置如下:
1
、本地安裝
JProfiler
,
Linux
服務(wù)器上也安裝
JProfiler
(只有本地
/
監(jiān)控者的需要輸入序列號)。
2
、打開本地的
JProfiler
,
session->Integration wizards-> New Remote integration
3
、選擇
on a remote computer
,
platform
選擇
linux x86/AMD64
,點(diǎn)擊
next
4
、輸入遠(yuǎn)程
ip
地址,點(diǎn)擊
next
5
、輸入遠(yuǎn)程
JProfiler
的安裝目錄,默認(rèn)都安裝在
/opt/jprofiler4
下,一路NEXT
6
、出現(xiàn)下面提示框,按照要求配置下服務(wù)器的設(shè)置,界面如下:
Java
執(zhí)行語句中加入下列運(yùn)行參數(shù)
?-Xint -Xrunjprofiler:port=8849 -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar
;
/etc/profile
中加入
export LD_LIBRARY_PATH=/opt/jprofiler4/bin/linux-x86
,退出、重新登陸。
7
、好了,全部配置完畢,先運(yùn)行遠(yuǎn)程服務(wù)器程序,再打開本地的
JProfiler
程序,握手成功后,遠(yuǎn)程程序正常運(yùn)行了。
服務(wù)器信息如下:
[root@ns 55556]# tail -f nohup.out
JProfiler> Protocol version 21
JProfiler> Using JVMPI
JProfiler> 32-bit library
JProfiler> Listening on port: 8849.
JProfiler> Native library initialized
JProfiler> Waiting for a connection from the JProfiler GUI ...
//
以上為本地
JProfiler
連上前的系統(tǒng)提示
JProfiler> Using dynamic instrumentation
JProfiler> Time measurement: elapsed time
JProfiler> CPU profiling enabled
JProfiler> Starting org/anymobile/server/cmwap/CmwapServer ...
2005/12/15 17:05:46 [ INFO] - Starting Cmwap Stand Server ...
2005/12/15 17:05:47 [ INFO] - HandleThread runing ......
8
、補(bǔ)充說明及參考
8.1
補(bǔ)充說明
如果你希望動(dòng)態(tài)保存當(dāng)前
Session
的運(yùn)行數(shù)據(jù)的快照,點(diǎn)擊
JProfiler
的保存按鈕即可;
可以通過
JProfiler Start Center
的
Open snapshot tab
打開保存的
Session
;
你也可以右鍵點(diǎn)擊某個(gè)視圖,靜態(tài)保存到
HTML
文件,文字描述加視圖圖片;
有一些視圖的數(shù)據(jù)只會(huì)運(yùn)行一次,不會(huì)動(dòng)態(tài)的刷新,如內(nèi)存視圖中的分配訪問樹等視圖;
WinXP
下
JProfiler
似乎不支持中文,
2K
下支持的,上面有一些圖片是在
2K
系統(tǒng)上截取的;
另外,
JProfiler
還可以監(jiān)控某個(gè)
Application Server
、
Applet
,功能非常強(qiáng)大,可以參考軟件自帶的
Help
。
8.2
參考
JProfiler Tutorials??????? ?????
http://www.ej-technologies.com/products/jprofiler/tutorials.html
What's new in
JProfiler????
http://www.ej-technologies.com/products/jprofiler/whatsnew41.html
JProfiler help???????????????????????
http://resources.ej-technologies.com/jprofiler/help/doc/
Java Virtual Machine Profiler Interface?
http://java.sun.com/j2se/1.3/docs/guide/jvmpi/index.html