新开发的项目,发现在以小米8/9 黑鲨为代表的骁龙845/855手机上,频繁闪退,闪退日志如下:
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.
根据经验和闪退场景判断,应该是unity对高通部分高配芯片(集中表现在小米的一批高端机)支持有问题,释放显存不及时,存在内存泄漏,导致游戏进程崩溃。
解决过程:
1、我们先通过贴图和mesh压缩的方式,降低了显存开销。明显延长了游戏时间,但是依旧治标不治本。
2、我们在2017.4.34(2018同一时间版本也有)的更新日志看到了可能相关的修复:
Release Notes:
Android: Fixed an out of memory issue happening on Adreno devices on GLES. (1111097, 1118824)
于是升级了版本,依旧无效。
3、于是我们猜测是否改BUG的修复未应用于32位版本,于是我们尝试使用64位版本。结果发现再也未出现过这个闪退了。
网友评论