Android使用Profiler查看應用內存分析

內存分析是Profiler中的一個組件旦装,可以幫助我們識別可能會導致應用卡頓、凍結甚至崩潰的內存泄露和內存抖動区转。可以顯示應用內存使用情況實時圖表版扩,幫助我們捕獲堆轉儲废离、強制執(zhí)行垃圾回收以及跟蹤內存的分配情況。

打開內存分析步驟:
1礁芦、依次點擊View→Tool Window→Profiler
2蜻韭、從Profiler工具欄中選擇要分析的設備以及應用進程。(需要優(yōu)先確保設備通過USB正常連接IDE)
3、點擊MEMORY時間軸上的任意位置可以打開內存分析湘捎。

一诀豁、分析應用內存的目的

當應用存在不再使用的某些對象時窄刘,垃圾回收器會將未使用的內存釋放窥妇。如果應用分配內存的速度比系統(tǒng)回收的速度快時,回收器要釋放足夠的內存來滿足應用的分配需要時娩践,應用可能會產生延遲活翩,從而可能導致應用跳幀,使應用明顯變慢翻伺。
即使應用使用過程中未表現(xiàn)出變慢材泄,但如果存在內存泄漏,應用掛在后臺運行時吨岭,依然會保留相應的內存拉宗。從而導致系統(tǒng)強制執(zhí)行不必要的垃圾回收時間,從而拖慢系統(tǒng)其余部分的內存性能辣辫,最終使系統(tǒng)被迫終止應用進程以回收內存旦事。致使用戶返回應用時,必須重啟急灭。影響到用戶體驗姐浮。
因此可以通過以下幾種操作從而防止這些問題:
1、在時間軸上查找可能會導致性能問題的不理想內存分配進行查看葬馋;
2卖鲤、轉儲java堆以便查看在任何給定時間內有哪些對象在占用內存。在一個較長的時間段內進行多次堆轉儲有助于分析內存泄漏點畴嘶,常用該種方式檢測蛋逾;
3、記錄正常與極端情況下用戶交互期間的內存分配情況窗悯。從而準確識別代碼中可能存在的短時間內分配過多對象而出現(xiàn)泄漏的情況区匣。

二、Profiler概覽

image.png

打開Profiler后蟀瞧,選擇設備以及應用沉颂,則可以看到時間軸界面,其中包含CPU悦污、MEMORY铸屉、ENERGY的情況。其中MEMORY為內存分析器切端、ENERGY為電池分析器彻坛;
其中我們主要是用內存分析器工具。


image.png

當中有三項選擇:Capture heap dump:獲取堆轉儲,該為目前主要檢測手段昌屉,稍后講解钙蒙;
Record native allocations:獲取設備上錄制原生分配情況;
Record Java/Kotlin allocations:獲取錄制Java和Kotlin分配情況间驮;

三躬厌、查看內存分配情況

1、內存分配情況表可以顯示內存中每個java對象和JNI引用的分配方式竞帽。因此扛施,內存分析器可以顯示有關對象分配情況信息如下:
--分配了哪些類型的對象以及他們使用了多少空間;
--每個分配堆棧的軌跡屹篓,包括在哪些線程中疙渣;
--對象何時被取消分配等;
如果需要中Android 10以及更高版本的設備上錄制原生分配情況堆巧,需要選擇Record native allocations妄荔,然后點擊Record,錄制會持續(xù)到點擊Stop為止谍肤,之后內存分析界面會轉換到顯示原生錄制的屏幕中啦租。


image.png

注意:低于android10,record native allocations選項不可使用谣沸。

如果需要錄制java和kotlin分配情況刷钢,請選擇record java/kotlin allocations,然后選擇record乳附。如果設備搭載的是android8+内地,則內存分析將可以轉換顯示就行錄制的界面,可以按緊選中某一塊區(qū)域進行查看赋除。


image.png

四阱缓、捕獲堆轉儲

堆轉儲顯示捕獲堆轉儲時應用中對象正在使用的內存,尤其是在長時間的操作中举农,堆轉儲會顯示認為不應該再存在的內存對象荆针,從而幫助識別內存泄漏。
如果需要捕獲堆轉儲颁糟,需要選擇capture heap dump航背,然后選擇record。一段時間后棱貌,就會生成heap dump玖媚,可進行查看,也可以通過第三方工具Memory Analyzer進行查看婚脱。

image.png

由于新版IDE剔除了Memory Analyzer工具今魔,因此勺像,目前查看需要通過eclipse中的插件工具memory analyzer進行查看〈砩可通過工具下載進行試驗:http://www.eclipse.org/mat/downloads.php

通過工具打開phrof文件吟宦,進入主界面


image.png

點擊leak suspects可查看疑似內存泄漏的地方,點擊detail可以查看分析出ArryList存放對象Person出了問題涩维。


image.png

也可以在overview中點擊dominator_tree查看堆占比殃姓,可以看出一個線程占比過高,集合中對象的數(shù)量過多等激挪。
image.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末辰狡,一起剝皮案震驚了整個濱河市锋叨,隨后出現(xiàn)的幾起案子垄分,更是在濱河造成了極大的恐慌,老刑警劉巖娃磺,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薄湿,死亡現(xiàn)場離奇詭異,居然都是意外死亡偷卧,警方通過查閱死者的電腦和手機豺瘤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來听诸,“玉大人坐求,你說我怎么就攤上這事∩卫妫” “怎么了桥嗤?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長仔蝌。 經常有香客問我泛领,道長,這世上最難降的妖魔是什么敛惊? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任渊鞋,我火速辦了婚禮,結果婚禮上瞧挤,老公的妹妹穿的比我還像新娘锡宋。我一直安慰自己,他們只是感情好特恬,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布执俩。 她就那樣靜靜地躺著,像睡著了一般鸵鸥。 火紅的嫁衣襯著肌膚如雪奠滑。 梳的紋絲不亂的頭發(fā)上丹皱,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音宋税,去河邊找鬼摊崭。 笑死,一個胖子當著我的面吹牛杰赛,可吹牛的內容都是我干的呢簸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼乏屯,長吁一口氣:“原來是場噩夢啊……” “哼根时!你這毒婦竟也來了?” 一聲冷哼從身側響起辰晕,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤蛤迎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后含友,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體替裆,經...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年窘问,在試婚紗的時候發(fā)現(xiàn)自己被綠了辆童。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡惠赫,死狀恐怖把鉴,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情儿咱,我是刑警寧澤庭砍,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站概疆,受9級特大地震影響逗威,放射性物質發(fā)生泄漏。R本人自食惡果不足惜岔冀,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一凯旭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧使套,春花似錦罐呼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至奉呛,卻和暖如春计螺,著一層夾襖步出監(jiān)牢的瞬間夯尽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工登馒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留匙握,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓陈轿,卻偏偏與公主長得像圈纺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子麦射,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容