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


Android Studio

翻譯的官方文章 原文鏈接

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

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

為什么要查看Java堆

Java堆展示如下信息:

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

但是,HPROF文件只是展示了某一時刻Java堆的使用情況,如果你需要了解某段時間內Java堆使用情況的, 你需要通過分析不同時間點生成的HPROF文件來找出其中的變化。HPROF分析工具可以自動分析出以下兩種類型的問題:

  • 所有已經被銷毀,但是不能回收的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、分析出重復定義的字符串。

獲取和顯示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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM