性能優(yōu)化工具-MAT的使用

本文已同步發(fā)表到我的技術(shù)微信公眾號(hào)公般,掃一掃文章底部的二維碼或在微信搜索 “程序員驛站”即可關(guān)注悲柱,不定期更新優(yōu)質(zhì)技術(shù)文章池颈。同時(shí),也歡迎加入QQ技術(shù)群(群號(hào):650306310)一起交流學(xué)習(xí)悯许!

最近在寫性能優(yōu)化專題相關(guān)文章,依次寫了“Android電量?jī)?yōu)化全解析”辉阶、“Android性能優(yōu)化全解析”先壕、“Android渲染優(yōu)化解析”、“Android計(jì)算優(yōu)化解析”谆甜。文章中有提到許多性能優(yōu)化的工具垃僚,但由于文章重點(diǎn)都是如何分析性能相關(guān)的論述,對(duì)工具的使用介紹大都是簡(jiǎn)單略過规辱,下面簡(jiǎn)單介紹下性能優(yōu)化工具-MAT(Memory Analyzer Tool)使用谆棺,介紹的順序?yàn)椋?/p>

image

Android電量?jī)?yōu)化全解析
Android內(nèi)存優(yōu)化全解析
Android渲染優(yōu)化解析(已發(fā)公眾號(hào))
Android計(jì)算優(yōu)化解析(已發(fā)公眾號(hào))

MAT與.hprof文件

MAT下載地址:http://eclipse.org/mat/downloads.php

MAT工具全稱為Memory Analyzer Tool,一款詳細(xì)分析Java堆內(nèi)存的工具罕袋,該工具非常強(qiáng)大改淑,為了使用該工具,我們需要hprof文件炫贤。但是該文件不能直接被MAT使用溅固,需要進(jìn)行一步轉(zhuǎn)化,可以使用hprof-conv命令來(lái)轉(zhuǎn)化兰珍,但是Android Studio可以直接轉(zhuǎn)化侍郭,轉(zhuǎn)化方法如下:

1.選擇一個(gè)hprof文件,點(diǎn)擊右鍵選擇Export to standard .hprof選項(xiàng)。

image

2.填寫更改后的文件名和路徑亮元。

image

點(diǎn)擊OK按鈕后猛计,MAT工具所需的文件就生成了!

下面我們用MAT來(lái)打開轉(zhuǎn)換后的doctorq.hprof文件:

1.打開MAT后選擇File->Open File選擇我們剛才生成的doctorq.hprof文件

image

2.選擇該文件后爆捞,MAT會(huì)有幾秒種的時(shí)間解析該文件奉瘤,有的hprof文件可能過大,會(huì)有更長(zhǎng)的時(shí)間解析煮甥,解析后盗温,展現(xiàn)在我們的面前的界面如下:

image

這是個(gè)總覽界面,會(huì)大體給出一些分析后初步的結(jié)論成肘。

Overview視圖

該視圖會(huì)首頁(yè)總結(jié)出當(dāng)前這個(gè)Heap dump占用了多大的內(nèi)存卖局,其中涉及的類有多少,對(duì)象有多少双霍,類加載器砚偶,如果有沒有回收的對(duì)象,會(huì)有一個(gè)連接洒闸,可以直接參看(圖中的Unreachable Objects Histogram)染坯。

比如該例子中顯示了Heap dump占用了41M的內(nèi)存,5400個(gè)類丘逸,96700個(gè)對(duì)象单鹿,6個(gè)類加載器, 然后還會(huì)有各種分類信息鸣个。

Biggest Objects by Retained Size

會(huì)列舉出Retained Size值最大的幾個(gè)值羞反,你可以將鼠標(biāo)放到餅圖中的扇葉上,可以在右側(cè)看出詳細(xì)信息:

image

圖中灰色區(qū)域囤萤,并不是我們需要關(guān)心的昼窗,他是除了大內(nèi)存對(duì)象外的其他對(duì)象,我們需要關(guān)心的就是圖中彩色區(qū)域涛舍,比如圖中2.4M的對(duì)象澄惊,我們來(lái)看看該對(duì)象到底是啥

image

該對(duì)象是一個(gè)Bitmap對(duì)象,你如果想知道該對(duì)象到底是什么圖片富雅,可以使用圖片工具gimp工具瀏覽該對(duì)象掸驱。

histogram視圖

histogram視圖主要是查看某個(gè)類的實(shí)例個(gè)數(shù),比如我們?cè)跈z查內(nèi)存泄漏時(shí)候没佑,要判斷是否頻繁創(chuàng)建了對(duì)象毕贼,就可以來(lái)看對(duì)象的個(gè)數(shù)來(lái)看。也可以通過排序看出占用內(nèi)存大的對(duì)象:

image

默認(rèn)是類名形式展示蛤奢,你也可以選擇不同的顯示方式鬼癣,有以下四種方式:

image

下面來(lái)演示一下:

image

Dominator tree視圖

image

該視圖會(huì)以占用總內(nèi)存的百分比來(lái)列舉所有實(shí)例對(duì)象陶贼,注意這個(gè)地方是對(duì)象而不是類了,這個(gè)視圖是用來(lái)發(fā)現(xiàn)大內(nèi)存對(duì)象的待秃。這些對(duì)象都可以展開查看更詳細(xì)的信息拜秧,可以看到該對(duì)象內(nèi)部包含的對(duì)象:

image

Leaks suspects視圖

image
image

這個(gè)視圖會(huì)展示一些可能的內(nèi)存泄漏的點(diǎn),比如上圖上圖顯示有3個(gè)內(nèi)存泄漏可疑點(diǎn)章郁,我們以Problem Suspect 1為例來(lái)理解該報(bào)告枉氮,首先我們來(lái)看該可疑點(diǎn)詳細(xì)信息:

image

上面信息顯示ImageCahe類的一個(gè)實(shí)例0xa50819f8占用了14.19%的內(nèi)存,具體值為5147200字節(jié)(5147200/1024/1024=4.9M),并存放在LinkedHashMap這個(gè)集合中暖庄,然后我們點(diǎn)擊Details跳轉(zhuǎn)到更詳細(xì)的頁(yè)面:

image

這樣我們就能找到在我們的app源碼中造成該泄漏可疑點(diǎn)的地方聊替,很容易去定位問題。

關(guān)注我的技術(shù)公眾號(hào)"程序員驛站"培廓,每天都有優(yōu)質(zhì)技術(shù)文章推送佃牛,微信掃一掃下方二維碼即可關(guān)注:


image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市医舆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌象缀,老刑警劉巖蔬将,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異央星,居然都是意外死亡霞怀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門莉给,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)毙石,“玉大人,你說我怎么就攤上這事颓遏⌒炀兀” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵叁幢,是天一觀的道長(zhǎng)滤灯。 經(jīng)常有香客問我,道長(zhǎng)曼玩,這世上最難降的妖魔是什么鳞骤? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮黍判,結(jié)果婚禮上豫尽,老公的妹妹穿的比我還像新娘。我一直安慰自己顷帖,他們只是感情好美旧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布渤滞。 她就那樣靜靜地躺著,像睡著了一般陈症。 火紅的嫁衣襯著肌膚如雪蔼水。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天录肯,我揣著相機(jī)與錄音趴腋,去河邊找鬼。 笑死论咏,一個(gè)胖子當(dāng)著我的面吹牛优炬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播厅贪,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼蠢护,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了养涮?” 一聲冷哼從身側(cè)響起葵硕,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贯吓,沒想到半個(gè)月后懈凹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悄谐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年介评,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片爬舰。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡们陆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出情屹,到底是詐尸還是另有隱情坪仇,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布垃你,位于F島的核電站烟很,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蜡镶。R本人自食惡果不足惜雾袱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望官还。 院中可真熱鬧芹橡,春花似錦、人聲如沸望伦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至腿箩,卻和暖如春豪直,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背珠移。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工弓乙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钧惧。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓暇韧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親浓瞪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子懈玻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容