1、概述:
jSonde能夠幫助你分析java應用程序。
她能夠生成序列圖、CPU和內存的性能評估以及不同格式的匯總:如jar依賴等。
使用jSonde不需要特別的知識,她適用於不同的操作系統和Java環境。
jSonde主要由2個組件:
1、 一個配置在Java進程中的代理,是為了收集信息
2、 一個用來顯示代理收集的信息的GUI
2、在Java應用中配置jSonde代理
主要有2中方法將jSonde配置到Java應用中:在Java命令行附加特定的參數,或者不重啟應用的前提下動態的添加代理。
2.1、動態添加代理
將jSonde代理添加到應用程序中最簡單的方法:
選擇按鈕"File" / "Attach to Sun JVM",你可以看到如下對話框:
在這個對話中列出的是當前你電腦上所有的Java應用程序(手冊其他章節中有關於這個對話框中其他的區域介紹)。需要注意的是這個特性只在JVM1.6+測試過,可能不能在其他版本的Java虛擬機中正常使用。
2.2、通過命令行參數添加代理
假設你是通過輸入命令:」java -jar app.jar」來啟動Java應用程序的。
你需要在命令行添加新的參數才能使應用啟動時具有jSonde代理特性.
新參數如下:
java -javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001-jar app.jar
不僅可以在J2SE應用中使用jSonde分析程序,下面還有在Tomcat、JBoss和其他容器中使用jSonde分析程序的示例。
3、Apache Tomcat
Microsoft Windows
啟動腳本:%TOMCAT_HOME%/bin/catalina.bat
在腳本文件中添加如下參數:
set JAVA_OPTS=-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001 %JAVA_OPTS%
如果tomcat是通過Windows服務或者系統托盤啟動的,那麼就添加下面的參數:
-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001
GNU/Linux & Mac OS X
啟動腳本: $TOMCAT_HOME/bin/catalina.sh
在腳本文件中添加如下參數:
JAVA_OPTS="-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001 $JAVA_OPTS"
4、JBoss
Microsoft Windows
啟動腳本:%JBOSS_HOME%/bin/run.bat
在腳本文件中添加如下參數:
set JAVA_OPTS=-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001 %JAVA_OPTS%
GNU/Linux & Mac OS X
啟動腳本: $JBOSS_HOME/bin/run.sh
在腳本文件中添加如下參數:
JAVA_OPTS="-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001 $JAVA_OPTS"
5、其他的應用伺服器
查看應用伺服器配置文件中設定jvm參數的地方,
注意:應該和你指定Memory選項:-Xms & -Xmx在相同的位置
6、在applets使用jSonde
jSonde能夠分析在安裝了Java Plugin的瀏覽器中運行的applets。
在Java(TM) Plug-in Control Panel/ Advanced/Java Runtime Parameters中添加如下選項:
-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001
在Windows平台下,通過控制面板訪問"Java(TM) Plug-in Control Panel"
注意:如果設定選項過程中瀏覽器正在運行,那麼設定完成後你必須重啟瀏覽。
還可以在appletviewer添加參數-J-javaagent:<path-to-jSonde-folder>/lib/jsonde.agent-1.0.0.beta6.jar=60001,
然後通過appletviewer啟動applets,此時jSonde也會起作用的。
7、通過命令行參數連接jSonde代理
在將jSonde代理參數添加到啟動腳本並且啟動程序之後,會輸出如下信息:
jSonde agent started
現在可以啟動jSonde GUI,然後選擇」File」¥」New Project」 按鈕。會看到如下的對話框,這個對話框已經在 「動態添加代理」章節中介紹過了。
Project name |
jSonde工程名稱,用來創建工程文件。 |
Project files location |
指定jSonde工程文件存放位置。每個工程是由一些文件名相同、後綴名不同的文件組成。 |
Agent host |
運行jSonde代理的電腦IP地址。如果jSonde GUI和代理在同一個台電腦上,使用127.0.0.1就行了。 |
Agent port |
連接jSonde代理和GUI的TCP埠。 |
Filters |
過濾器-指定需要被分析的文件。下面的章節有介紹。 |
8、jSonde中的過濾器
能夠在jSonde指定過濾器來分析特定的Java類,這樣就可以只分析你編寫的Java類,同時還可以提升效率。
假設你所有的類文件都在包」com.mycompany」中,首先需要排除所有的類,不選擇」*」,然後選擇」com.mycompany」包。
最後點擊」Connect」按鈕-jSonde已經開始工作了。
9、使用jSonde分析應用程序
可以使用主菜單或者左側的accordion 面板來打開不同的視圖:序列圖、報表、profiling等。
10、查看序列圖
選擇」Sequence Diagrams」,會看到由應用程序中的類組成的樹。這棵樹的根節點是有jSonde發起」root」方法調用。
在這些指定類的生命周期中,」root」方法是第一個被調用的函數。(見上面關於過濾器的部分)
如果在選定的方法上雙擊,會在工作去打開一個新的序列圖標籤。
可以使用工具欄上的按鈕來調整圖的顯示,滑鼠拖動也同樣可以。
11、查看報表
選擇」Reports」來查看這些報表,也可以通過主菜單來訪問。
11.1、依賴報表
這類報表是用來查看工程源碼依賴的第三方資源(例如.jar文件),還可以用來查找缺失、冗餘的依賴。
11.2、關於極端代碼的運行時間報表
通過運行時間找出極端代碼:
按照分組jar文件的方式列出運行最「慢」或者最「多」被使用的方法
11.3、拋異常最多的方法
這種報表用來匯總拋異常最多的方法。如果一個方法拋出一個異常次數很多,那麼就需要複審它的介面了。
12、jSonde 分析
jSonde支持CPU和內存監控分析,能夠找出執行次數最多的方法、創建次數最多的對象等。
點擊 accordion 面板中的」Profiler」,然後選擇合適的profile視圖。
12.1、CPU profiler
CPU profiler 顯示方法被調用的測試已經方法總共運行的時間。為了方便瀏覽,數據時按照樹的方式顯示:
12.2、堆分析
堆分析能夠幫助用戶瀏覽Java堆快照,分析哪些對象經常被創建、哪些對象佔用大量的內存,以及其他的數據。