作為計(jì)算機(jī)程序運(yùn)行最重要的資源之一,在運(yùn)行過程中需要合理分配和回收資源 。不合理的內(nèi)存占用會(huì)導(dǎo)致用戶應(yīng)用運(yùn)行卡頓、ANR和黑屏,甚至導(dǎo)致用戶應(yīng)用發(fā)生 。
OOM(內(nèi)存不足)崩潰 。作為用戶廣泛使用的產(chǎn)品,Tik Tok需要在各種機(jī)器資源上保持出色的流暢度和穩(wěn)定性,內(nèi)存優(yōu)化是必須重視的關(guān)鍵環(huán)節(jié) 。
本文結(jié)合Tik Tok Java OOM內(nèi)存優(yōu)化的治理實(shí)踐,嘗試與大家分享Tik Tok團(tuán)隊(duì)對Java內(nèi)存優(yōu)化的一些思考,包括工具建設(shè)和優(yōu)化方法論 。
#抖音 Java OOM 背景
在Tik Tok記憶特殊處理之前,我們梳理了整體記憶指數(shù)的絕對值和相對崩潰,發(fā)現(xiàn)比例非常高 。再加上去年春節(jié)期間記憶相關(guān)指標(biāo)再次飆升至歷史新高,整體記憶問題相當(dāng)嚴(yán)峻,必須進(jìn)行專項(xiàng)治理 。Tik Tok這邊將通過早期歸因、工具建設(shè)和為期兩個(gè)月的記憶特別管理進(jìn)行整合 。
Java OOM優(yōu)化了80% 。
#Java OOM Top 堆棧歸因
在優(yōu)化Tik Tok的Java內(nèi)存治理之前,我們首先根據(jù)平臺(tái)上報(bào)的棧異常對當(dāng)前的OOM進(jìn)行了歸因,主要分為以下幾類:

文章插圖
1.OOM分類 。
其中,pthread_create問題約占總數(shù)的50%,Java堆內(nèi)存超限超過40%,其余為少量fd超限 。在…之中
pthread_create和fd數(shù)量不足是本機(jī)內(nèi)存限制導(dǎo)致的Java層崩潰 。我們也針對這部分內(nèi)存問題做了針對性的優(yōu)化,主要包括:
*線程收斂、監(jiān)控 。
*自動(dòng)修復(fù)螺紋疊漏 。
* FD泄漏監(jiān)測 。
*虛擬內(nèi)存監(jiān)控和優(yōu)化 。
* Tik Tok 64位特別程序 。
治理之后,pthread_create的問題降低到0.02以下,這方面的治理實(shí)踐將在下一篇文章Native in Tik Tok中討論 。
請期待內(nèi)存治理實(shí)踐中的詳細(xì)介紹 。本文主要討論Java堆內(nèi)存管理 。
#堆內(nèi)存治理思路
從Java堆內(nèi)存溢出的分類來看,主要有兩類問題:
1\. 堆內(nèi)存單次分配過大/多次分配累計(jì)過大 。
觸發(fā)這類問題的原因是由于數(shù)據(jù)異常導(dǎo)致單個(gè)內(nèi)存分配過大、超限,部分是StringBuilder 。
拼接的累計(jì)尺寸過大等等 。這類問題的解決方法很簡單,問題就出在當(dāng)前棧上 。
2\. 堆內(nèi)存累積分配觸頂.
這類問題的問題棧會(huì)比較分散,在任何內(nèi)存分配場景下都可能觸發(fā),那些高頻內(nèi)存分配節(jié)點(diǎn)的概率會(huì)比較高,比如Bitmap分配內(nèi)存 。這種OOM
根本原因是積累的內(nèi)存太多,當(dāng)前的棧只是壓垮駱駝的最后一根稻草,不是問題的根源 。因此,我們需要分析整體內(nèi)存分配,找出不合理的內(nèi)存使用情況(如內(nèi)存泄漏、大對象,過度小對象,大圖等) 。).
#工具建設(shè)
#工具思路
鋒利的工具很管用 。從上述內(nèi)存管理思路來看,該工具需要解決的主要問題是分析整體內(nèi)存分配,發(fā)現(xiàn)不合理的內(nèi)存使用情況(如內(nèi)存泄漏、大對象,過度小對象,等) 。).
我們從兩個(gè)維度構(gòu)建工具:線下和線上:
#線下
線下是第一考慮,內(nèi)存泄漏問題可以在開發(fā)測試時(shí)前發(fā)現(xiàn) 。業(yè)界主流的工具也是這個(gè)思路,比如安卓Studio Memory 。
剖析器、泄漏檢測器、內(nèi)存分析器 。
我們基于線下.的leakkarine核心庫
ng>設(shè)計(jì)了一自動(dòng)分析上報(bào)內(nèi)存泄露的工具,主要流程如下:

文章插圖
圖 2.線下自動(dòng)分析流程
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時(shí)就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 抖音怎么弄配音加原音,抖音視頻后期配音怎么弄
- 西瓜視頻可以看手機(jī)通訊錄嗎,西瓜視頻找通訊錄好友
- 皮皮趕海視頻,皮皮趕海西瓜視頻主頁
- 西瓜視 西瓜視頻是誰開的
- 怎么刪除抖音自己的作品,發(fā)表在抖音里的視頻怎么刪除
- 視頻剪切器免費(fèi)手機(jī)版 手機(jī)視頻剪輯軟件哪個(gè)好用
- 短視頻編劇合作平臺(tái) 短視頻編劇職責(zé)
- 免root卸載華為 免root卸載華為視頻
- 短視頻聯(lián)盟真的還是假的 全球短視頻聯(lián)盟是不是假的
- 農(nóng)家朱少新視頻 二丫鄉(xiāng)村生活西瓜視頻
