抖音在運(yùn)行了一段線下的內(nèi)存泄漏工具之后,發(fā)現(xiàn)了線下工具的各種弊端:
1. 檢測(cè)出來(lái)的內(nèi)存泄漏過(guò)多,并且也沒(méi)有比較好的優(yōu)先級(jí)排序,研發(fā)消費(fèi)不過(guò)來(lái),歷史問(wèn)題就一直堆積 。另外也很難和業(yè)務(wù)研發(fā)溝通問(wèn)題解決的收益,大家針對(duì)解決線下的內(nèi)存泄漏問(wèn)題的 ROI(投入產(chǎn)出比)比較難對(duì)齊 。
2. 線下場(chǎng)景能跑到的場(chǎng)景有限,很難把所有用戶(hù)場(chǎng)景窮盡 。抖音用戶(hù)基數(shù)很大,我們經(jīng)常遇到一些線上的 OOM 激增問(wèn)題,因?yàn)槿鄙倬€上數(shù)據(jù)而無(wú)從查起 。
3. Android 端的 HPORF 的獲取依賴(lài)原生的 Debug.dumpHporf,dump 過(guò)程會(huì)掛起主線程導(dǎo)致明顯卡頓,線下使用體驗(yàn)較差,經(jīng)常會(huì)有研發(fā)反饋影響測(cè)試 。
4. LeakCanary 基于 Shark 分析引擎分析,分析速度較慢,通常在 5 分鐘以上才能分析完成,分析過(guò)程會(huì)影響進(jìn)程內(nèi)存占用 。
5. 分析結(jié)果較為單一,僅僅只能分析出 Fragment、Activity 內(nèi)存泄露,像大對(duì)象、過(guò)多小對(duì)象問(wèn)題導(dǎo)致的內(nèi)存 OOM 無(wú)法分析 。
# 線上
正是由于上述一些弊端,抖音最早的線下工具和治理流程并沒(méi)有起到什么太大作用,我們不得不重新審視一下,工具建設(shè)的重心從線下轉(zhuǎn)成了線上 。線上工具的核心思路是:在發(fā)生
OOM 或者內(nèi)存觸頂?shù)扔|發(fā)條件下,dump 內(nèi)存的 HPROF 文件,對(duì) HPROF
文件進(jìn)行分析,分析出內(nèi)存泄漏、大對(duì)象、小對(duì)象、圖片問(wèn)題并按照泄露鏈路自動(dòng)歸因,將大數(shù)據(jù)問(wèn)題按照用戶(hù)發(fā)生次數(shù)、泄露大小、總大小等緯度排序,推進(jìn)業(yè)務(wù)研發(fā)按照優(yōu)先級(jí)順序來(lái)建立消費(fèi)流程 。為此我們研發(fā)了一基于
HPORF 分析的線下、線上閉環(huán)的自動(dòng)化分析工具 Liko(寓意 ko 內(nèi)存 Leak 問(wèn)題) 。
# Liko 介紹
# Liko 整體架構(gòu)

文章插圖
圖 3. Liko 架構(gòu)圖
整體架構(gòu)由 客戶(hù)端 、 Server 端 和核心 分析引擎 三部分構(gòu)成 。
* 客戶(hù)端
在客戶(hù)端完成 HPROF 數(shù)據(jù)采集和分析(針對(duì)端上分析模式),這里線上和線下策略不同 。
線上 :主要在 OOM 和內(nèi)存觸頂時(shí)通過(guò)用戶(hù)無(wú)感知 dump 來(lái)獲取 HPROF 文件,當(dāng) App
退出到后臺(tái)且內(nèi)存充足的情況進(jìn)行分析,為了盡量減少對(duì) App 運(yùn)行時(shí)影響,主要通過(guò)裁剪 HPROF
回傳進(jìn)行分析,減輕服務(wù)器壓力,對(duì)部分比例用戶(hù)采用端上分析作為 Backup 。
線下 :dump 策略配置較為激進(jìn),在 OOM、內(nèi)存觸頂、內(nèi)存激增、監(jiān)測(cè) Activity、Fragment 泄漏數(shù)量達(dá)到一定閾值多種場(chǎng)景下觸發(fā)
dump,并實(shí)時(shí)在端上分析上傳至后臺(tái)并在本地自動(dòng)生成 html 報(bào)表,幫助研發(fā)前發(fā)現(xiàn)可能存在的內(nèi)存問(wèn)題 。
* Server 端
Server 端根據(jù)線上回傳的大數(shù)據(jù)完成鏈路聚合、還原、分配,并根據(jù)用戶(hù)發(fā)生次數(shù)、泄露大小、總大小等緯度促進(jìn)研發(fā)測(cè)消費(fèi),對(duì)于回傳分析模式則會(huì)另外進(jìn)行
HPORF 分析 。
* 分析引擎
基于 MAT 分析引擎完成內(nèi)存泄露、大對(duì)象、小對(duì)象、圖片等自動(dòng)歸因,同時(shí)支持在線下自動(dòng)生成 Html 報(bào)表 。
# Liko 流程圖

文章插圖
圖 4. Liko 流程圖
整體流程分為:
1. Hprof 收集
2. 分析時(shí)機(jī)
3. 分析策略
# Hprof 收集
收集過(guò)程我們?cè)O(shè)置了多種策略可以自由組合,主要有 OOM、內(nèi)存觸頂、內(nèi)存激增、監(jiān)測(cè) Activity、Fragment
泄漏數(shù)量達(dá)到一定閾值時(shí)觸發(fā),線下線上策略配置不同 。
為了解決 dump 掛起進(jìn)程問(wèn)題,我們采用了子進(jìn)程 dump+fileObsever 的方式完成 dump 采集和監(jiān)聽(tīng) 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問(wèn)題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專(zhuān)業(yè)人士給予相關(guān)指導(dǎo)!
「愛(ài)刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- 抖音怎么弄配音加原音,抖音視頻后期配音怎么弄
- 西瓜視頻可以看手機(jī)通訊錄嗎,西瓜視頻找通訊錄好友
- 皮皮趕海視頻,皮皮趕海西瓜視頻主頁(yè)
- 西瓜視 西瓜視頻是誰(shuí)開(kāi)的
- 怎么刪除抖音自己的作品,發(fā)表在抖音里的視頻怎么刪除
- 視頻剪切器免費(fèi)手機(jī)版 手機(jī)視頻剪輯軟件哪個(gè)好用
- 短視頻編劇合作平臺(tái) 短視頻編劇職責(zé)
- 免root卸載華為 免root卸載華為視頻
- 短視頻聯(lián)盟真的還是假的 全球短視頻聯(lián)盟是不是假的
- 農(nóng)家朱少新視頻 二丫鄉(xiāng)村生活西瓜視頻
