亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

西瓜視頻播放位置其他是哪里,西瓜視頻的緩存文件在哪里( 六 )


而單個(gè)像素大小,我們通過替換系統(tǒng) drawable 默認(rèn)色彩通道,將部分沒有透明通道的圖片格式由 ARGB_8888 替換為
RGB565,在圖片質(zhì)量上的損失幾乎肉眼不可見,而在內(nèi)存上可以直接節(jié)省一半 。
# 圖片兜底
針對(duì)因 activity、fragment 泄漏導(dǎo)致的圖片泄漏,我們?cè)?onDetachedFromWindow 時(shí)機(jī)進(jìn)行了監(jiān)控和兜底,具體流程如下:

西瓜視頻播放位置其他是哪里,西瓜視頻的緩存文件在哪里

文章插圖

圖 17. 圖片兜底流程
# 圖片監(jiān)控
關(guān)于對(duì)不合理的大圖 or 圖片使用我們?cè)谧止?jié)碼層面進(jìn)行了攔截和監(jiān)控,在原生 Bitmap or 圖片庫創(chuàng)建時(shí)機(jī)記錄圖片信息,對(duì)不合理的大圖進(jìn)行上報(bào);另外在
ImageView 的設(shè)置過程中針對(duì) Bitmap 遠(yuǎn)超過 view 本身超過大小的場景也進(jìn)行了記錄和上報(bào) 。

西瓜視頻播放位置其他是哪里,西瓜視頻的緩存文件在哪里

文章插圖

圖 18. 圖片字節(jié)碼監(jiān)控方案
# 更多思考
是不是解決了 OOM 內(nèi)存問題就告一段落了呢?作為一只追求極致的團(tuán)隊(duì),我們除了解決靜態(tài)的內(nèi)存占用外也自研了 Kenzo(Memory
Insight)工具嘗試解決動(dòng)態(tài)內(nèi)存分配造成的 GC 卡頓 。
# Kenzo 原理
Kenzo 采用 JVMTI 完成對(duì)內(nèi)存監(jiān)控工作,JVMTI(JVM Tool Interface)是 Java 虛擬機(jī)所供的 native
編程接口 。JVMTI 開發(fā)時(shí),應(yīng)用建立一個(gè) Agent 使用 JVMTI,可以使用 JVMTI 函數(shù),設(shè)置回調(diào)函數(shù),并從 Java
虛擬機(jī)中得到當(dāng)前的運(yùn)行態(tài)信息,并作出自己的業(yè)務(wù)判斷 。

西瓜視頻播放位置其他是哪里,西瓜視頻的緩存文件在哪里

文章插圖

圖 19. Agent 時(shí)序圖
Jvmti SetEventCallbacks 方法可以設(shè)置目標(biāo)虛擬機(jī)內(nèi)部事件回調(diào),可以根據(jù) jvmtiCapabilities
支持的能力和我們關(guān)注的事件來定義需要 hook 的事件 。
Kenzo 采用 Jvmti 完成如下事件回調(diào):
* 類加載準(zhǔn)備事件 - > 監(jiān)控類加載
* ClassPrepare:某個(gè)類的準(zhǔn)備階段完成 。
* GC - > 監(jiān)控 GC 事件與時(shí)間
* GarbageCollectionStart:GC 啟動(dòng)時(shí) 。
* GarbageCollectionFinish:GC 結(jié)束后 。
* 對(duì)象事件 - > 監(jiān)控內(nèi)存分配
* ObjectFree:GC 釋放一個(gè)對(duì)象時(shí) 。
* VMObjectAlloc:虛擬機(jī)分配一個(gè)對(duì)象的時(shí)候 。
框架設(shè)計(jì)
Kenzo 整體分為兩個(gè)部分:
# 生產(chǎn)端
* 采集內(nèi)存數(shù)據(jù)
* 以 sdk 形式集成到宿主 App
# 消費(fèi)端
* 處理生產(chǎn)端的數(shù)據(jù)
* 輸入 Kenzo 監(jiān)控的內(nèi)存數(shù)據(jù)
* 輸出可視化報(bào)表

西瓜視頻播放位置其他是哪里,西瓜視頻的緩存文件在哪里

文章插圖

圖 20. kenzo 框架
> 生產(chǎn)端主要以 Java 進(jìn)行 API 調(diào)用,C++完成底層檢測邏輯,通過 JNI 完成底層邏輯控制 。
> 消費(fèi)端主要以 Python 完成數(shù)據(jù)的解析、視圖合成,以 HTML 完成頁面內(nèi)容展示 。
# 工作流

西瓜視頻播放位置其他是哪里,西瓜視頻的緩存文件在哪里

文章插圖

圖 21. kenzo 框架
# 可視化展示

西瓜視頻播放位置其他是哪里,西瓜視頻的緩存文件在哪里

文章插圖

圖 22. kenzo 聚合展示
# 啟動(dòng)階段內(nèi)存歸因
基于動(dòng)態(tài)內(nèi)存監(jiān)控我們對(duì)最為核心的啟動(dòng)場景的內(nèi)存分配進(jìn)行了歸因分析,優(yōu)化了一些頭部的內(nèi)存節(jié)點(diǎn)分配:

西瓜視頻播放位置其他是哪里,西瓜視頻的緩存文件在哪里

文章插圖

圖 23.啟動(dòng)階段內(nèi)存節(jié)點(diǎn)歸因
另外我們也發(fā)現(xiàn)啟動(dòng)階段存在大量的字符串拼接操作,雖然編譯器已經(jīng)優(yōu)化成了 StringBuider append,但是深入 StringBuider


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: