新開發(fā)的項(xiàng)目,發(fā)現(xiàn)在以小米8/9 黑鯊為代表的驍龍845/855手機(jī)上,頻繁閃退,閃退日志如下:
Adreno-GSL:<sharedmem_gpuobj_alloc:2713>: sharedmem_gpumem_alloc: mmap failed errno12 Out of memory
12-18 19:46:37.81430159 30430 E Adreno-GSL: <gsl_memory_alloc_pure:2297>: GSL MEM ERROR: kgsl_sharedmem_alloc ioctl failed.
根據(jù)經(jīng)驗(yàn)和閃退場景判斷,應(yīng)該是unity對高通部分高配芯片(集中表現(xiàn)在小米的一批高端機(jī))支持有問題,釋放顯存不及時,存在內(nèi)存泄漏,導(dǎo)致游戲進(jìn)程崩潰。
解決過程:
1、我們先通過貼圖和mesh壓縮的方式,降低了顯存開銷。明顯延長了游戲時間,但是依舊治標(biāo)不治本。
2、我們在2017.4.34(2018同一時間版本也有)的更新日志看到了可能相關(guān)的修復(fù):
Release Notes:
Android: Fixed an out of memory issue happening on Adreno devices on GLES. (1111097, 1118824)
于是升級了版本,依舊無效。
3、于是我們猜測是否改BUG的修復(fù)未應(yīng)用于32位版本,于是我們嘗試使用64位版本。結(jié)果發(fā)現(xiàn)再也未出現(xiàn)過這個閃退了。