教學指導:分析側寫資料
目標
如果要分析從側寫 Java 程序所收集的資料,請依照下列方式來使用「側寫和記載」視景的「側寫和記載」視圖:
- 識別最耗時間的物件和方法
- 識別大量使用記憶體的類別
- 判斷程式並行性
- 尋找記憶體洩漏
- 以時間函數的方式瀏覽方法執行
- 以時間函數的方式取得更全面的執行行為視圖
- 識別作用中的執行緒
- 識別執行緒何時作用中
- 識別經常呼叫的方法
- 判斷記憶體回收
- 識別不同的程式執行階段
- 研究不同的方法呼叫
- 研究方法的呼叫端
所需時間
1 小時
開始之前
在開始本教學指導之前,您必須先:
- 安裝 Eclipse 平台,包括「測試和效能工具平台 (TPTP)」。
- 準備匯入範例側寫檔案 (hcframe.jar)。這個檔案應該在下列目錄中:
TPTP_install_dir\eclipse\plugins\org.eclipse.tptp.platform.collection.framework_4.0.0
說明
在本教學指導中,您將使用不同的「側寫和記載」視圖來分析 PerformanceExample.class 範例。
這個範例會開啟一個含有兩個按鈕的頁框。
您將完成下列作業:
- 在工作台中開啟「側寫和記載」視景
- 側寫 PerformanceExample 類別
- 分析側寫資訊
如果要在監視應用程式時更新視圖,請按一下「自動更新視圖」按鈕
。
從視窗功能表中,按一下開啟視景 > 其他 > 側寫和記載。
如果要側寫 PerformanceExample 類別,請遵循下列步驟:
- 按一下側寫下拉框
,選取側寫。這時會開啟「啟動側寫」對話框。
- 按兩下外部 Java 應用程式來建立新的配置。
- 切換到主要標籤。
- 在類別名稱欄位中,輸入 org.eclipse.hyades.test.collection.framework.PerformanceExample。
- 按一下新增 JAR 來新增包含這個類別的 JAR。
- 選取 TPTP_install_dir\eclipse\plugins\org.eclipse.tptp.platform.collection.framework_4.0.0\hcframe.jar
- 按一下開啟。這時會新增這個 JAR。
- 按一下監視標籤。您可以在這個標籤中指定側寫準則。
- 在「監視」標籤上,展開標籤為 Java 側寫的節點,選取基本記憶體分析,勾選它旁邊的勾選框。
這個會新增記憶體相關資訊到應該從應用程式收集的資訊類型清單。
- 選取執行時間分析,勾選它旁邊的勾選框。
當選取這個選項,您可以利用各個統計值視圖來分析時間相關的資訊。
您必須收集執行圖形詳細資料,才能使用「執行流程」和「方法呼叫」視圖。
由於這個範例的目的是向您介紹包括「執行流程」和「方法呼叫」視圖在內的所有側寫視圖,因此,當選取執行時間分析時,請按一下編輯選項,在「編輯側寫選項」對話框中,選取顯示執行流程圖形詳細資料。
另外,也請按一下收集過濾器集所排除的界限類別勾選框,將界限類別深度設為 1。按一下完成。
- 「側寫過濾器集」可讓您指定要分析的資訊子集。
如果您要過濾不在要分析的界限內的類別或套件,這非常有用。
請選取資料收集器 Java 側寫,按一下編輯選項,這時會開啟「過濾器集」對話框。
在選取的過濾器集的內容下方,按一下新增,新增您要收集資料的類別或套件。
這時會開啟「新增過濾器」對話框。
- 若要側寫這個類別,請在類別中輸入 org.eclipse.hyades.test.collection.framework.*。
- 在方法名稱中指定 *,只包含這個範例相關的方法。
- 按一下確定。這時會將過濾準則加到內容清單中。
- 若要從過濾內容清單中排除其他現有的類別,請在類別的「規則」直欄下方按一下併入,改為排除。
- 按下一步,進入限制頁面。
這個頁面會控制以經歷時間或方法呼叫數目為基礎而收集的資料量。
請接受預設值。請按一下完成來關閉和套用所做的變更。
- 按一下目的地標籤。ProfileProject 和預設監視器是預設的側寫資源,它們可用來儲存這個側寫階段作業的資料。
- 按一下側寫。
- 這時會建立所需的側寫資源,且代理程式和程序會出現在「側寫監視器」視圖中。
- 如下列擷取畫面所示,選取分散式版面來檢視「監視器」。您將會看到監視器,內有您的資料及執行工作台的機器。

檢視經過一段時間的執行行為
您可以利用「執行流程」視圖和表格來檢查應用程式的執行情形。
此視圖以圖形和列表格式來呈現整個程式的執行情形。在「執行流程」視圖中,時間顯示在垂直軸。
「執行流程」表格在「執行流程」視圖下方開啟,列出每一個執行緒及每個執行緒呼叫的方法。
- 在「側寫監視器」視圖中,選取您的監視器,按一下滑鼠右鍵來選取開啟工具 > 執行流程,開啟「執行流程」視圖。這時會開啟「執行流程」視圖。
- 若要檢查特定的方法,請按一下來選取方法。接著,它呼叫的所有方法都會以黃色強調顯示。強調顯示的區域的垂直長度會指出方法的基礎時間。
基礎時間的正確值將顯示在狀態行。

在視圖中將游標移至任何物件上,視窗底部的狀態列將顯示詳細資訊。
- 使用放大工具
來啟用游標,然後點按以放大區域。
附註:如果要在監視應用程式時更新視圖,請按一下自動更新視圖按鈕
。
識別作用中的執行緒
在「執行流程」視圖中,每一個執行緒都含有活動期間,這些期間是以大量的方法呼叫來加以識別。在符號表示法,第一個呼叫的方法是線條,而且它後續呼叫的方法將以其他線條出現在它的右邊。方法呼叫的順序是由左至右;執行緒的作用中部分是由這個由左至右進度加以識別。
當您選取概述方法呼叫順序的整個區段時,花費在執行該順序的基礎時間將顯示在狀態行。如果要查看執行緒作用中的基礎時間,請找出下列時間之間的差異:
- 指向所選的黃色區域的頂端水平線,在狀態行顯示對應的基礎時間。
- 同樣地,指向黃色選取區的下邊緣(當方法順序作用時,它會蓋住執行期間),然後檢視該時刻的基礎時間。
提示
- 如果圖形太擠不易閱讀,請放大
擁擠的區域。
- 當您選取某個方法時,其呼叫的所有方法都會以黃色強調顯示。
- 您可以在工作台中拖放視圖,並依需要將它們同步排列。
- 不論您將游標指向何處,狀態列中都會指出對應的基礎時間。
- 如果要重設視圖的顯示,按一下首頁按鈕。
識別經常呼叫的方法
如果要識別經常呼叫的方法:
- 使用「縮放」工具
來放大一序列的方法呼叫。
- 尋找所選的區域內是否有同色的線條。這些線條會識別來自同一類別實例(已被呼叫多次)的方法。
- 檢查不同顏色的線條的長度(每一線條代表一種方法)。
線條越長,方法的執行時間就越長。
判斷記憶體回收
正常情況下,不可能經由在這個視圖中檢查使用者執行緒中的線條,而得知物件是否發生了記憶體回收。
請遵循下列步驟:
- 依預設會隱藏記憶體回收執行緒。從視圖的快速功能表中選取執行緒 > GC,即可顯現。
- 檢查位在這個視圖最左邊的直欄。這個直欄保留給記憶體回收執行緒,
因此稱之為 GC 執行緒直欄。
- 檢查在 GC 執行緒直欄中是否有單一的細矩形。或許可以在物件上的大多數方法呼叫中找到矩形。
每當物件發生記憶體回收時,這個矩形就會出現在 GC 執行緒直欄。
識別程式執行的階段
識別起始設定階段
- 使用「放大」工具
,來放大主要執行緒頂端一序列的方法呼叫。
- 請注意標示為 -init- 的方法。
- 按一下以選取這類方法。狀態列會更新,指出方法會協助起始設定(指定值給應用程式中所使用的變數)。
使用「方法呼叫」視圖來分析方法
- 從「側寫監視器」中,選取監視器或代理程式。按一下滑鼠右鍵,然後選取開啟工具 > 執行流程。這時會出現「執行流程」視圖。
- 選取您要瞭解的方法,按一下滑鼠右鍵,選取顯示方法呼叫。
- 使用「放大」工具
來放大一段顯示畫面。這些線條是按照類別編寫顏色碼,並透過代表方法呼叫的水平線加以連接。
- 按一下方法名稱來選取方法。
- 按一下自動更新視圖按鈕
,確定您所檢視的是現行資訊。
- 注意下面這一行:

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