Android Camera內存問題剖析

本文通過一類 Android 機型上相機拍攝過程中的 native 內存 OOM 的問題展開,藉助內存快照裁剪回撈和 Native 內存監控工具的賦能,來深入剖析此類問題。

背景

Raphael 是西瓜視頻 Android 團隊開發的一款 native 內存監控工具,在字節跳動內部產品(如西瓜、抖音、頭條等)上廣泛用於監控 native 內存泄漏問題。在抖音 7.8.0-8.3.0 上搜集到大量因虛擬內存觸頂而 crash 的內存日誌現場(如 pthread_create、GL error、EGL_BAD_ALLOC),其中 60%以上都是 camera 相關的內存泄漏,佔整體 crash 的 15%以上(Java & Native)。同時也收到 OPPO 等廠商反饋抖音 app 在其新機型上 native crash 比其他機型高了 3 倍以上,分析廠商提供的日誌發現基本都是虛擬內存觸頂導致的 carsh,這其中 80%以上都有 camera 相關的內存分配失敗的日誌。

問題

通過對 native 內存監控蒐集到的日誌進行堆棧聚合和 so 級的內存佔用統計,可以發現截止到 OOM 時工具攔截到的 native 內存總量已經達到了 1.3G 左右(32 位下應用可直接使用的 native 內存上限約 2G),這其中佔比最大的是 CameraMetaData 對象間接引用的內存,native 內存泄漏十分嚴重。

原文鏈接:【https://www.infoq.cn/article/mgQKjqOKMWJa46ztUxLo】。未經作者許可,禁止轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章