Android 內(nèi)存抖動(dòng)和內(nèi)存泄漏

內(nèi)存抖動(dòng)

引起的原因:短時(shí)間內(nèi)有大量對象創(chuàng)建與銷毀敛助,它伴隨著頻繁的GC权她。

內(nèi)存抖動(dòng)會(huì)引起頻繁的gc,gc是會(huì)STW的疑故,會(huì)暫停用戶線程。

Android Studio 內(nèi)置了性能監(jiān)測工具M(jìn)emory Monitor

A:手動(dòng)觸發(fā)GC操作

B:獲取當(dāng)前的堆棧信息弯菊,生成.hprof文件

C:內(nèi)存分配追蹤工具纵势,生成.alloc文件

D:已使用內(nèi)存

E:剩余可用內(nèi)存

通過與應(yīng)用交互并在Memory Monitor中觀察它是如何影響內(nèi)存的使用,圖表可以為你展示一些潛在的問題:

1.頻繁的垃圾收集活動(dòng)使應(yīng)用運(yùn)行緩慢管钳。

2.應(yīng)用耗盡內(nèi)存導(dǎo)致app崩潰.

3.潛在的內(nèi)存泄漏

正常情況下钦铁,上圖中的D區(qū)域會(huì)隨著時(shí)間的走勢慢慢上升(就算你與APP沒有任何交互),直到E區(qū)域被用完才漆,則會(huì)觸發(fā)GC操作牛曹,釋放內(nèi)存,周而復(fù)始醇滥。如果你發(fā)現(xiàn)你的應(yīng)用是靜態(tài)的黎比,但是E區(qū)域的內(nèi)存很快就被用完了,即頻繁的觸發(fā)GC操作鸳玩,這時(shí)你就應(yīng)該引起重視阅虫,說不定你的代碼中就存在著引起內(nèi)存泄漏的隱患。

在Memory一欄中不跟,可以觀察不同時(shí)間App內(nèi)存的動(dòng)態(tài)使用情況颓帝,點(diǎn)擊可以手動(dòng)觸發(fā)GC(點(diǎn)擊上圖A處),然后點(diǎn)擊上圖B處可以進(jìn)入HPROF Viewer界面窝革,查看Java的Heap购城,如下圖


最后補(bǔ)充一個(gè)我遇到的例子


以上是我的例子,不斷的從MainActivity跳到Main2Activity虐译,很明顯會(huì)因?yàn)镃ontext導(dǎo)致內(nèi)存泄漏瘪板,下面我們用Android Monitor來排查出來


然后進(jìn)入到.hprof結(jié)尾的文件



內(nèi)存泄漏,MAT檢測內(nèi)存泄漏實(shí)戰(zhàn)


dump完成后Android studio會(huì)開啟一個(gè)新的視圖顯示當(dāng)前內(nèi)存中的所有對象

?導(dǎo)出hprof文件漆诽,點(diǎn)擊導(dǎo)出按鈕將Android studio中的hprof文件導(dǎo)出到自己的文件夾篷帅,用于后續(xù)在MAT工具中分析。


導(dǎo)出的hprof文件是無法直接在MAT工具中分析的拴泌,如果直接在MAT中打開這個(gè)文件會(huì)報(bào)錯(cuò),需要進(jìn)行轉(zhuǎn)換惊橱,轉(zhuǎn)換工具是sdk/platform-tools里面的hprof-conv.exe工具蚪腐,執(zhí)行命令進(jìn)行轉(zhuǎn)換:


在MAT中打開轉(zhuǎn)換后的文件,打開后選擇Histogram視圖税朴,輸入SecondActivity進(jìn)行過濾回季,可以看到SecondActivity對象有2個(gè)家制,右鍵選擇SecondActivity對象,選擇merge shortest paths to gc roots -> exclude all phantom/weak/soft etc. references泡一,排除掉虛引用/弱引用/軟引用,只保留強(qiáng)引用,因?yàn)橹挥袕?qiáng)引用才會(huì)導(dǎo)致內(nèi)存泄露茂翔。

分析強(qiáng)引用的引用鏈:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凳兵,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子帖蔓,更是在濱河造成了極大的恐慌矮瘟,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件塑娇,死亡現(xiàn)場離奇詭異澈侠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)埋酬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進(jìn)店門哨啃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人写妥,你說我怎么就攤上這事拳球。” “怎么了耳标?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵醇坝,是天一觀的道長。 經(jīng)常有香客問我次坡,道長呼猪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任砸琅,我火速辦了婚禮宋距,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘症脂。我一直安慰自己谚赎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布诱篷。 她就那樣靜靜地躺著壶唤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棕所。 梳的紋絲不亂的頭發(fā)上闸盔,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天,我揣著相機(jī)與錄音琳省,去河邊找鬼迎吵。 笑死躲撰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的击费。 我是一名探鬼主播拢蛋,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蔫巩!你這毒婦竟也來了谆棱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤批幌,失蹤者是張志新(化名)和其女友劉穎础锐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荧缘,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡皆警,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了截粗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片信姓。...
    茶點(diǎn)故事閱讀 38,768評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖绸罗,靈堂內(nèi)的尸體忽然破棺而出意推,到底是詐尸還是另有隱情,我是刑警寧澤珊蟀,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布菊值,位于F島的核電站,受9級特大地震影響育灸,放射性物質(zhì)發(fā)生泄漏腻窒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一磅崭、第九天 我趴在偏房一處隱蔽的房頂上張望儿子。 院中可真熱鬧,春花似錦砸喻、人聲如沸柔逼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽愉适。三九已至,卻和暖如春癣漆,著一層夾襖步出監(jiān)牢的瞬間儡毕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留腰湾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓疆股,卻偏偏與公主長得像费坊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子旬痹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評論 2 350

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