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




7
、
遠程監控
服務器程序一般運行在遠程的服務器設備上,有時候我們還需要遠程監控商用的服務器資源。
服務器操作系統
Linux OS ,安裝步驟如下:
1、./jprofiler_linux_4_1_2.sh,出現如下提示:
testing JVM in /usr/jdk1.4 ...
Starting Installer ...
注:對于沒有安裝X Server的機器,需要執行./jprofiler_linux_4_1_2.sh -q,否則會提示,
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、安裝完畢后,會在/opt目錄下,找到jprofiler的安裝目錄,/opt/jprofiler4。
本地操作系統
WindowXP
,相關的配置如下:
1
、本地安裝
JProfiler
,
Linux
服務器上也安裝
JProfiler
(只有本地
/
監控者的需要輸入序列號)。
2
、打開本地的
JProfiler
,
session->Integration wizards-> New Remote integration
3
、選擇
on a remote computer
,
platform
選擇
linux x86/AMD64
,點擊
next
4
、輸入遠程
ip
地址,點擊
next
5
、輸入遠程
JProfiler
的安裝目錄,默認都安裝在
/opt/jprofiler4
下,一路NEXT
6
、出現下面提示框,按照要求配置下服務器的設置,界面如下:
Java
執行語句中加入下列運行參數
?-Xint -Xrunjprofiler:port=8849 -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar
;
/etc/profile
中加入
export LD_LIBRARY_PATH=/opt/jprofiler4/bin/linux-x86
,退出、重新登陸。
7
、好了,全部配置完畢,先運行遠程服務器程序,再打開本地的
JProfiler
程序,握手成功后,遠程程序正常運行了。
服務器信息如下:
[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
連上前的系統提示
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
、補充說明及參考
8.1
補充說明
如果你希望動態保存當前
Session
的運行數據的快照,點擊
JProfiler
的保存按鈕即可;
可以通過
JProfiler Start Center
的
Open snapshot tab
打開保存的
Session
;
你也可以右鍵點擊某個視圖,靜態保存到
HTML
文件,文字描述加視圖圖片;
有一些視圖的數據只會運行一次,不會動態的刷新,如內存視圖中的分配訪問樹等視圖;
WinXP
下
JProfiler
似乎不支持中文,
2K
下支持的,上面有一些圖片是在
2K
系統上截取的;
另外,
JProfiler
還可以監控某個
Application Server
、
Applet
,功能非常強大,可以參考軟件自帶的
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