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