練習 1.2:擷取資料堆傾出

開始之前,您必須先完成練習 1.1:匯入必要的資源

實務

您的組織有一個三層式的佇列作業系統,這個系統是 Web Proxy 應用程式的一部分。佇列作業系統的每一層都有自己的佇列。測試團隊判斷應用程式發生記憶體洩漏,而且懷疑是在佇列作業的系統中。身為佇列之一的開發人員,您被指派來判斷哪一層發生記憶體洩漏。

概觀

若要執行記憶體洩漏分析,您需要擷取兩個 Java 資料堆傾出。

資料堆是 Java 虛擬機器 (JVM) 在執行時用來儲存 Java 物件的記憶體區塊。Java 資料堆記憶體由記憶體回收器來管理,它會自動取消配置不再參照的 Java 物件。

資料堆傾出是特定時間的資料堆內容的影像。

您需要兩個資料堆傾出,才能看到應用程式執行過程中兩個時間點之間的記憶體用量變更。內建演算法會比較資料堆,並識別不應該再停留於記憶體中的物件。演算法分析下列指標來識別可能的洩漏情況:在兩個資料堆傾出之間的整段時間都存在記憶體中的物件、在第二個資料堆中的某個給定類別的物件數增加,以及物件的參照數。

準備擷取資料堆傾出

若要擷取資料堆傾出,您必須切換至「側寫和記載」視景:

  1. 從 Software Development Platform 功能表列,按一下視窗 > 開啟視景 > 其他。這時會開啟「選取視景」對話框。
  2. 在對話框的左下部分,按一下顯示全部。勾選框中會出現勾號。
  3. 從視景清單中,選取側寫和記載,再按一下確定
  4. 如果開啟「確認啟用」對話框,請按一下一律啟用功能,以後不要再問我,再按一下確定
  5. Software Development Platform 切換至「側寫和記載」視景。

擷取資料堆傾出

在這個教學指導中,您將要手動擷取資料堆傾出。(另外,您可以設定時間間隔來自動擷取資料堆傾出,或匯入現有的資料堆傾出。)

若要擷取資料堆傾出:

  1. 執行應用程式:
    1. 在功能表列按一下執行 > 側寫。這時會開啟「側寫」對話框。
    2. 在「配置」清單中,按兩下 Java 應用程式。清單中會出現 New_configuration 項目。
    3. 在「名稱」欄位中,輸入 ThreeTierQueue_MemLkAnalysis
    4. 在「主要」標籤中的「專案」欄位旁邊,按一下瀏覽。這時會開啟「選取專案」對話框。
    5. 選取 ThreeTierQueue,然後按一下確定
    6. 在「主要類別」欄位旁邊,按一下搜尋
    7. 在「選擇主要類型」對話框中,選取 TestThreeTierQueue,然後按一下確定
    8. 在「側寫」對話框中,按一下「側寫」標籤。
    9. 在「概觀」子標籤中,勾選「記憶體洩漏分析 - 手動資料堆傾出」側寫集的勾選框。(側寫集定義執行時期要收集的側寫資料類型。)
    10. 按一下側寫。應用程式執行,並顯示如下列的變化:
      • 「側寫監視器」中出現處理程序的「側寫」資源和代表「自動分析洩漏」側寫類型的項目。
      • 畫面會開啟「洩漏候選項」視圖,並顯示內含下一步如何處理之指示的「現行狀態」訊息。
        附註:如果出現無法使用 Agent Controller 的「安全性訊息」,請閱讀如果您無法收集資料
  2. 擷取資料堆傾出:
    1. 在功能表列按一下視窗 > 顯示視圖 > 主控台開啟「主控台」視窗,讓您可以在應用程式執行時跟隨著應用程式進行。
    2. 讓應用程式暖機約半分鐘,確定您要進行側寫的所有類別都已載入並起始設定。
    3. 遵循「洩漏候選項」視圖中的指示:按一下「擷取資料堆傾出」工具列按鈕 來擷取基準資料堆傾出(資料堆比較的起點)。「側寫監視器」中出現代表資料堆傾出的另一個項目。
    4. 讓應用程式再執行一分鐘,同樣遵循「洩漏候選項」視圖中的指示,以相同的方式擷取第二個資料堆傾出。「側寫監視器」中出現第二個資料堆傾出的項目。
    5. 按一下「主控台」視圖中的「終止」按鈕 來終止程序。

如果您無法收集資料

Agent Controller 必須在執行中才能收集任何類型的側寫資料。如果出現無法使用 Agent Controller 的訊息,請確定已安裝 Agent Controller、以手動方式啟動 Agent Controller,然後再試一次。如需指示,請參閱安裝手冊。您可以利用啟動程式來存取安裝手冊,或者在產品光碟的 disk1/install.html 之下找到安裝手冊。

完成收集資料之後,您已準備好開始進行練習 1.3:分析洩漏候選項

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