練習 1.3:分析洩漏候選項

開始之前,您必須先完成練習 1.2:擷取資料堆傾出

在這個練習中,首先將會產生明顯有洩漏現象的物件清單(例如,陣列、向量和階段作業)。這些稱為「洩漏候選項」。然後將會分析這份清單來找出任何的洩漏。

產生洩漏候選項清單

若要產生清單:

  1. 遵循「洩漏候選項」視圖中的指示,按一下「分析洩漏」工具列按鈕 。這時會開啟「選取分析洩漏選項」對話框。
  2. 在對話框中,請確定已勾選您的兩個資料堆傾出的勾選框。
    附註:「臨界值」預設為 20。這表示只會顯示「可能性」的值為 20 的洩漏候選項。(這個練習的稍後會提供關於「可能性」值的詳細資訊。)
  3. 按一下確定來產生清單。Software Development Platform 右下角的指示器會表示正在尋找洩漏候選項。

「洩漏候選項」視圖的概觀

當處理程序完成時,「洩漏候選項」視圖會顯示洩漏候選項清單。

每一個候選項都具有 1 到 100 之間的可能性值,最可能的候選項其值為 100。其他的候選項則會區分等級,依照可能性降冪次序列示出來。(資料堆比較演算法根據洩漏大小以及兩個資料堆傾出之間間隔的資料堆成長量來計算可能性值。)

這個側寫執行的「臨界值」設為 20;「可能性」值為 19 或更低的任何候選項將不會顯示。

視圖會提供每個洩漏候選項的下列資料:

分析及識別洩漏

若要識別洩漏:

  1. 在「洩漏候選項」視圖中,查看可能性為 100 的洩漏候選項資料:
  2. 按兩下洩漏候選項。這時會開啟「物件參照圖形」視圖,並顯示洩漏候選項的圖形資料。(請注意,可能需要一點時間來準備要顯示的資料堆傾出。)
  3. 檢查物件參照圖形。請注意下列事項:
  4. 將游標暫停在連接 Object 陣列和 String 的路徑之上,然後閱讀顯示的工具要訣:它顯示「計數」等於「洩漏候選項」視圖中的「洩漏數」,所以這是定義為洩漏的字串的集合。
  5. 在物件參照圖形中,按兩下 String 物件。這時會開啟「物件詳細資料」視圖。其中會顯示 String 物件的所有詳細資料,包括參照它的所有物件,以及它參照的所有物件。請注意,在「物件詳細資料」視圖中,您可以按一下其中的一個物件來透過參照者向上導覽,或透過被參照者(該物件參照的物件)向下導覽。

您發現什麼狀況?您現在知道第二個佇列是洩漏物件,而且知道是因為 Vector 物件保留太多 String 物件的參照而發生洩漏。

現在您已準備好開始進行練習 1.4:修正記憶體洩漏

讀者意見
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.