Android Studio - HPROF文件查看和分析工具
Android Studio - HPROF文件查看和分析工具
翻譯的官方文章?原文鏈接
當你在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堆的快照,必須要經過下面兩步:
當轉儲成功是這個內存監視器顯示的圖標會改變。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文件的步驟如下:
- App heap?- 當前app使用的堆
- Image heap?- 當前app在硬盤上的內存映射
- Zygote heap?- zygote 復制時繼承來的庫、運行時類和常量的數據集。zygote空間設備啟動時創建,從不分配這里的空間。
- Class List View
- Package Tree View
HPROF文件查看工具中分析數據
以下步驟是典型工作流程:
HPROF文件分析工具中分析數據
用HPROF分析工具可以檢測到泄漏的activities、分析出重復定義的字串。使用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
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的Android Studio - HPROF文件查看和分析工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android混淆解析
- 下一篇: 港中大教授研发DeepID人脸识别技术