我们项目有直播这一块,我调试过程中发现,将直播推入后台一段时间,然后在切入到程序后,程序就会崩溃掉,崩溃日志包含gpus_ReturnNotPermittedKillClient
原因是由于ios不支持处于background的后台view进行OpenGL渲染。所以切后台之前要调用glfinish,将缓冲区中的指令(无论是否为满)立刻送给图形硬件执行,glfinish会等待图形硬件执行完才返回。
另外,在首页点击进入不同直播间,会发现内存泄漏很严重,发现opengl有时候也没有完全释放掉,而且cell中创建的数组,控件都是全局变量,不利于内存优化,改成懒加载后有所改善。我们项目中opengl需要手动释放,把释放的方法放到主线程中,我判断,当进入直播间时渲染了opengl,退出时需要释放opengl,opengl释放没有放到主线程中以至于偶尔有时候没有释放掉就退出直播间了,逐渐累加,内存泄漏,终于导致程序crash掉。把释放opengl的操作改到主线程中。
网友评论