Android Studio MAT内存分析初探
點擊打開鏈接
做開發有一些年頭的想必都會碰到程序性能方面的問題,性能優化有很多種,但是首先我們得定位是哪一塊的問題;好在前方有巨人可以讓我們站,Android Studio已經為我們提供了性能分析工具MAT。
下面有兩種使用方式:
一、Android Device Monitor
1、打開Android Studio通過Tools ->Android -> Android Device Monitor打開。
在這里樓主遇到了一個小插曲,在打開的時候報錯了:unexpected error while parsing input: Invalid uiautomator hierarchy file?解決方式就是:找到路徑:C:\Users\用戶名\.android下的monitor-workspace文件夾,刪掉它重新打開就好了。
2、接下來在Android Device Monitor界面中首先選中你要分析的應用程序的包名(這里我的是zz.mack.com.mytimeview),然后點擊Update Heap來更新統計信息,接著點擊Cause GC制造GC操作即可查看當前堆的占用情況,最后點擊Dump HPROF file 即當前應用的內存信息保存成hprof文件保存至一個目錄下;具體如下圖:
3、打開Android Studio。將你剛才保存的hprof文件拖動到編寫代碼的窗口即可,就是出現下面的信息:?
這里首先說下A區域:?
左上角是HPROF Viewer查看方式可選列表, 分別是用來選擇Heap區域, 和Class View的展示方式的:?
Heap類型分為:?
App Heap – 當前App使用的Heap?
Image Heap – 磁盤上當前App的內存映射拷貝?
Zygote Heap – Zygote進程Heap(每個App進程都是從Zygote孵化出來的, 這部分基本是framework中的通用的類的Heap)
Class List View – 類列表方式?
Package Tree View – 根據包結構的樹狀顯示
緊接著下面的表名:
| Class Name | Heap中的所有Class |
| Total Count | 內存中該類這個對象總共的數量 |
| Heap Count | 堆內存中這個類對象的個數 |
| Sizeof | 每個該實例占用的內存大小 |
| Shallow Size | 所有該類的實例占用的內存大小 |
| Retained Size | 所有該類對象被釋放掉,會釋放多少內存 |
接下來是B區域
| Instance | 該類的實例 |
| Depth | 深度, 從任一GC Root點到該實例的最短跳數 |
| Dominating Size | 該實例可支配的內存大小 |
C區域則描述的是B中實例具體被引用信息。
好了上面就是通過Android Device Monitor來生成hprof文件,其實Android Studio已經為我們集成了工具。
二、Android Studio
打開AS,找到底部的工具欄Android Monitor;如圖依次點擊三個按鈕1/2/3,最后就會生成上面的hprof文件并自動打開:?
接下來的界面跟第一種方式是一樣的,這里就不細說了。?
如果有發現按鈕不能點擊的同學,請先編譯運行程序。
最后通過這個工具可以很方便讓我們快速找出哪個類占用內存比較多容易引發內存泄漏,從而我們好做應對;一般來說容易內存泄漏的都更圖片有關,所以做好圖片的處理會很關鍵
總結
以上是生活随笔為你收集整理的Android Studio MAT内存分析初探的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android7.1增加一个开机自启动的
- 下一篇: Android Studio +MAT