Android Studio - HPROF文件查看和分析工具

Android Studio

翻譯的官方文章 原文連接html

當你在Android Studio中使用Android Monitor裏的Memory Monitor工具監視內存使用狀況時,能夠把Java堆快照轉儲到Android HPROF文件中(譯者注:與標準的java hprof文件格式標準不同)。HPROF查看工具會列出類、類的實例和實例的引用樹,以此來幫助你跟蹤內存的使用狀況,找出內存泄漏的地方。HPROF最初是由J2SE支持的一種二進制堆轉儲格式。java

本文出處:http://www.jianshu.com/p/7d958959cf33android

爲何要查看Java堆

Java堆展現以下信息:瀏覽器

  • 按類展現實例對象的內存使用狀況;
  • 每次垃圾回收事件的樣本數據,無論是系統觸發仍是你手動觸發的垃圾回收事件;
  • 幫助分析哪些對象類型也許會致使內存泄漏。

可是,HPROF文件只是展現了某一時刻Java堆的使用狀況,若是你須要瞭解某段時間內Java堆使用狀況的, 你須要經過分析不一樣時間點生成的HPROF文件來找出其中的變化。HPROF分析工具能夠自動分析出如下兩種類型的問題:app

  • 全部已經被銷燬,可是不能回收的Activity的實例;
  • 重複定義的字符串。

理解HPROF文件查看工具的顯示

HPROF文件查看工具界面以下:編輯器


HPROF文件查看工具

這個工具顯示了以下信息:工具

名稱 描述
Class name 類名
Total Count 該類的實例總數
Heap Count 所選擇的堆中該類的實例的數量
Sizeof 單個實例所佔空間大小(若是每一個實例所佔空間大小不同則顯示0)
Shallow Size 堆裏全部實例大小總和(Heap Count * Sizeof)
Retained Size 該類全部實例所支配的內存大小
Instance 具體的實例
Reference Tree 所選實例的引用,以及指向該引用的引用。
Depth GC根節點到所選實例的最短路徑的深度
Shallow Size 所選實例的大小
Dominating Size 所選實例所支配的內存大小

若是你點擊了Analyzer Tasks就會展現HPROF分析工具,界面以下圖右邊板塊:翻譯


HPROF文件分析工具

用HPROF分析工具,能夠檢測到泄漏的activities、分析出重複定義的字符串。htm

獲取和顯示Java堆的快照

要想查看Java堆的快照,必需要通過下面兩步:對象

  1. 在內存監視工具裏顯示一個正在運行的程序
  2. 點擊Java堆轉儲按鈕
    當轉儲成功是這個內存監視器顯示的圖標會改變。Android studio建立的HPROF文件名格式爲package_yyyy.mm.dd_hh.mm.ss.hprof,使用包名和轉儲的時間來命名,例如com.android.calc_2015.11.17_14.58.48.hprof。

查看一個已經保存好的HPROF文件

堆轉儲後,Android studio會自動保存HPROF文件,以便你再次查看。用HPROF查看工具查看HPROF文件的步驟以下:

  1. 在主窗口中點擊Captures按鈕,或者選擇 View > Tools Windows > Captures,打開Captures窗口;
  2. 打開堆快照文件夾;
  3. 雙擊你想要查看的HPROF文件,打開HPROF文件查看工具界面;
  4. 選擇你想查看的堆
    • App heap - 當前app使用的堆
    • Image heap - 當前app在硬盤上的內存映射
    • Zygote heap - zygote 複製時繼承來的庫、運行時類和常量的數據集。zygote空間設備啓動時建立,從不分配這裏的空間。
  5. 選擇你想查看的視圖選項:
    • Class List View
    • Package Tree View

HPROF文件查看工具中分析數據

如下步驟是典型工做流程:

  1. 在HPROF文件查看工具中選擇一個類名;
  2. 選擇該類的一個實例;
  3. 查看引用樹;
  4. 當須要的時候能夠右鍵引用樹種的條目跳轉到源碼或者實例。

HPROF文件分析工具中分析數據

用HPROF分析工具能夠檢測到泄漏的activities、分析出重複定義的字串。使用HPROF文件分析工具標準步驟以下:

  1. 打開Captures窗口,雙擊你想要查看的HPROF文件,打開HPROF文件查看工具界面;
  2. 點擊Android Studio主窗口右邊欄上的Analyzer Tasks,默認HPROF文件分析工具會出如今HPROF文件查看工具的右邊。
  3. Analyzer Tasks列表中選擇你想分析的選項;
  4. 點擊開始分析的按鈕;
  5. 查看分析結果,點擊結果中條目可在HPROF文件分析工具中查看詳情。

數據排序

在HPROF文件查看工具中,點擊表格的頂部,可讓表格中數據升序或者將序排列。

展現Java源碼

在HPROF文件查看工具中展現的部分項能夠直接跳轉到源碼,右鍵項目點擊Jump to Source就能夠在代碼編輯器中打開源碼。

HPROF文件相關操做

Android Studio中你能夠重命名、定位或者刪除HPROF文件,你也能夠把他轉成標準的HPROF文件格式來使用其餘的分析工具分析。

重命名HPROF文件

在Android Studio中重命名的HPROF文件仍然會出如今Captures窗口中。
Captures窗口HPROF文件列表中選擇你想操做的文件,右鍵點擊Rename

定位HPROF文件

你能夠快速找到Android Studio存放HPROF文件的位置。在Captures窗口HPROF文件列表中選擇你想操做的文件,右鍵點擊show in explorer,Android Studio會打開系統文件瀏覽器定位到文件存放的位置。

注意:Android Studio沒法在Captures窗口顯示那些被移動別的路徑下去的HPROF文件,若是想顯示請使用File > Open。同理,不要使用系統的文件瀏覽器來重命名HPROF文件。

刪除HPROF文件

Captures窗口HPROF文件列表中選擇你想操做的文件,右鍵點擊Delete,Android Studio會從Captures窗口和硬盤上刪除文件。

將堆轉儲文件轉化成標準的HPROF文件

轉化成標準的HPROF文件後可使用Android Studio以外的分析工具來分析。在Captures窗口HPROF文件列表中選擇你想操做的文件,右鍵點擊 Export to standard .hprof

相關文章
相關標籤/搜索