背景:测试反馈项目组游戏存在内存泄露,来找到中台这边协调排查。好家伙,跑了两次看了内存快照,再看资源组织和管理方式,存在的问题确实比较多。
1、修复内存泄露:结算界面由于资源引用丢失导致整个面板不会被释放,每次泄漏50MB左右的内存。
2、改进资源卸载,通过引用计数管理资源,当引用计数=0,释放AssetBundle.Unload(true)
3、字体SDF优化
4、texture压缩格式
5、请求协议优化:登录成功后集中请求的协议改为多线程,合并任务活动等协议请求。平滑进大厅的体验。
6、较大模型和spine降低面数,牺牲20%的效果提升60%的性能。
7、粒子特效优化:设置规范,规定粒子发射数目上限,贴图大小上限,模型Mesh面数上限。
8、UI全屏面板遮挡关系处理:多个全屏打开时,隐藏被遮挡的面板。
9、不合理的AssetBundle划分,单个AB不超过2MB。
10、spine导出格式由json改为二进制。
一顿操作下来半小时后运行时内存由2GB降低到1GB。
。。。
新的任务是导出H5,等优化完毕再来继续补充。