指導教學:分析 Java 程序的側寫資料
目標
如果要分析從側寫 Java 程序所收集的資料,請依照下列方式來使用「側寫和日誌記載」視景的「側寫和日誌記載」視圖:
- 識別最耗時間的物件和方法
- 識別大量使用記憶體的類別
- 判斷程式並行性
- 尋找記憶體洩漏
- 以時間函數的方式瀏覽方法執行
- 以時間函數的方式取得更全面的執行行為視圖
- 識別作用中的執行緒
- 識別執行緒何時作用中
- 識別經常呼叫的方法
- 判斷記憶體回收
- 識別不同的程式執行階段
- 研究不同的方法呼叫
- 研究方法的呼叫端
所需時間
1 小時
開始之前
在開始本指導教學之前,您必須先:
- 安裝「Eclipse 平台」,包括 Hyades 工具。
- 備妥可匯入的側寫檔案範例。它們應該位於:
install directory\directory\eclipse\plugins\org.eclipse.hyades.collection.framework\src\org\eclipse\hyades\test\collection\framework
說明
在本指導教學中,您將使用不同的「側寫和日誌記載」視圖來分析 PerformanceExample.class 範例。
這個範例會開啟一個含有兩個按鈕的頁框。
您將完成下列作業:
- 在工作台中開啟「側寫和日誌記載」視景
- 側寫 PerformanceExample 類別
- 分析側寫資訊
如果要在監視應用程式時更新視圖,請按一下「重新整理視圖」按鈕
。
請按一下開啟視景
> 其他 > 側寫和日誌記載
請遵循下列步驟:
- 按一下側寫
。這時會開啟「啟動 Java 程序」精靈的「類別」頁面。
- 選取:在檔案系統上選取一個類別。
- 按一下瀏覽,然後找出範例類別,其應位於:
install directory\eclipse\plugins\org.eclipse.hyades.collection.framework\bin\org\eclipse\hyades\test\collection\framework
按下一步。這時會開啟「目的地」頁面。
- ProfileProject 和 DefaultMonitor 是預設的側寫資源,它們應用來儲存來自這個側寫階段作業的資料。按下一步。這時候畫面會開啟「側寫過濾器」頁面。
- 接受預設的過濾器。
按下一步。這時會開啟「側寫選項」頁面。
- 應用程式使用太多記憶體的勾選框一定會被選取,
這表示記憶體相關的資訊會包含在從應用程式收集的側寫資料中。
- 如果要接收執行資訊,請選取應用程式太慢。藉由選取這個選項,您可以使用「統計值」視圖來分析時間相關的資訊。您需要收集執行圖形式詳細資料,才能使用「執行流程」和「方法呼叫」視圖。由於這個範例的目的是要引導您進行所有的側寫視圖,(
包括「執行流程」和「方法呼叫」視圖),因此請按一下顯示詳細資料,然後選取顯示執行流程圖形式詳細資料。按一下完成。
- 這時會建立所需的側寫資源,且代理程式和程序會出現在「側寫監視器」視圖中。
- 啟用檢視「資料夾」、「監視器」和「主機」,您會看到群組資料的監視器,以及正在執行工作台的機器。
檢視經過一段時間的執行行為
- 開啟「執行流程」視圖:選取監視器、按一下滑鼠右鍵,然後選取開啟工具 > 執行流程。
- 整個程式的執行過程都會呈現在這個視圖中。它會在右邊的縱軸顯示時間。
- 按一下某個方法的名稱(或它之下的空白)來選取它。接著,它呼叫的所有方法都會以黃色強調顯示。強調顯示區域的垂直長度會指出方法的基本時間。基本時間的正確值將顯示在狀態行。

- 使用放大工具
來啟用游標,然後點按以放大區域。

使用「執行流程」視圖來分析程序
開啟執行流程視圖
- 從「側寫監視器」視圖中,選取監視器或代理程式。
- 按一下滑鼠右鍵,然後選取開啟工具 > 執行流程。
這時會開啟「執行流程」視圖。
附註:如果要在監視應用程式時更新視圖,請按一下「重新整理視圖」
按鈕
。
識別作用中的執行緒
在「執行流程」視圖中,每一個執行緒都含有活動期間,這些期間是以大量的方法呼叫來加以識別。在符號表示法,第一個呼叫的方法是線條,而且它後續呼叫的方法將以其他線條出現在它的右邊。方法呼叫的順序是由左至右;執行緒的作用中部分是由這個由左至右進度加以識別。
當您選取概述方法呼叫順序的整個區段時,花費在執行該順序的基本時間將顯示在狀態行。如果要得知作用中執行緒的基本時間,
請找出下列時間的差異:
- 指向所選的黃色區域的頂端水平線,在狀態行顯示對應的基本時間。
- 同樣地,指向黃色選取區的下邊緣(當方法順序作用時,它會蓋住執行期間),然後檢視該時刻的基本時間。
要訣
- 如果圖形太擠不易閱讀,請放大
該擁擠的區域。
- 當您選取某個方法時,其呼叫的所有方法都會以黃色強調顯示。
- 您可以在工作台中拖放視圖,並依需要將它們同步排列。
- 不論您將游標指向何處,狀態列中都會指出對應的基本時間。
- 如果要重設視圖的顯示,按一下首頁按鈕。
識別經常呼叫的方法
如果要識別經常呼叫的方法:
- 使用「縮放」工具
來放大一序列的方法呼叫。
- 尋找所選的區域內是否有同色的線條。這些線條會識別來自同一類別實例(已被呼叫多次)的方法。
- 檢查不同顏色的線條的長度(每一線條代表一種方法)。
線條越長,方法的執行時間就越長。

判斷記憶體回收
正常情況下,不可能經由在這個視圖中檢查使用者執行緒中的線條,而得知物件是否發生了記憶體回收。
請遵循下列步驟:
- 檢查位在這個視圖最左邊的直欄。這個直欄保留給記憶體回收執行緒,
因此稱之為 GC 執行緒直欄。
- 檢查在 GC 執行緒直欄中是否有單一的細矩形。或許可以在物件上的大多數方法呼叫中找到矩形。
每當物件發生記憶體回收時,這個矩形就會出現在 GC 執行緒直欄。
識別程式執行的階段
識別起始設定階段
- 使用「放大」工具
,來放大主要執行緒頂端一序列的方法呼叫。
- 請注意,這些方法會標示為 -init-
- 按一下以選取這類方法。狀態列會更新,指出方法會協助起始設定(指定值給應用程式中所使用的變數)。
使用「方法呼叫」視圖來分析方法
- 從「側寫監視器」中,選取監視器或代理程式。按一下滑鼠右鍵,然後選取開啟工具 > 執行流程。這時會出現「執行流程」視圖。
- 選取您要瞭解的方法,按一下滑鼠右鍵,然後選取顯示方法呼叫。
- 使用「放大」工具
來放大一段顯示畫面。這些線條是按照類別編寫顏色碼,並透過代表方法呼叫的水平線加以連接。
- 按一下方法名稱來選取方法。
- 按一下重新整理視圖按鈕
,確定您所檢視的是現行資訊。
- 注意下面這一行:

這一行顯示了方法的名稱,後面接著 n/m,其中 n 是目前所顯示的呼叫數,相對於呼叫總數 m。
- 按一下上一頁
和
下一頁
,
來瀏覽所選之方法的所有呼叫(或所選之物件的每一則訊息)。
工具列上的分數會變更,以指出您正在檢視哪一個呼叫。
找出方法的呼叫端
如果要找出呼叫方法的程式,請繼續在「方法呼叫」視圖中進行以下步驟:
- 如果要檢視方法的呼叫端,請按一下顯示呼叫端按鈕
。
會顯示方法並在它的左邊顯示其呼叫端。
- 如果要針對您所檢視的每一個新呼叫檢視關於方法呼叫端的詳細資料,請將
游標定位在視圖中代表呼叫端的線條上。
狀態行將顯示呼叫者的資訊。
- 如果要察看所選之方法所呼叫的方法, 請按一下顯示呼叫的方法按鈕
。
(C) Copyright IBM Corporation 2000, 2003. All Rights Reserved.