资源泄漏检测
版本记录
日期 | 版本 | 说明 | 作者 |
---|---|---|---|
2018-11-6 | 1.0 | 资源泄漏 | 李俊 |
问题分割
游戏从热更开始,找到1个点,这个点满足能反复到达。 大地图之前增加1个空场景。刚进游戏就是这个空场景。
刚进游戏前资源问题
人工方式确定在profile里每个资源合理性,要求这个阶段的资源都是ab里加载出来的,重点确定每个ab的合理性
刚进游戏后资源问题
方法:
一. 第一次达到这个点,获取下所有的operationhandle的快照
二. 长时间游戏后,再次到达这个点,获取下所有的operationhandle的集合,跟一中的快照做对比,得到三部分:
- 一有二有(正常)
- 一有二没有(忽略)
- 一没有二有(泄漏部分)
注意:
泄露的operationhandle需要提供足够的信息以便解决问题,即需要记录下来c#的栈和lua的栈,lua栈可能是错误的
资源加载模块,自我检测工具
从资源加载模块获取到所有正在使用的ab,与assetbundle的api获取到的,做对比,差异部分为有问题的。
问题
- 解决不了资源没有及时释放
- 进游戏前需要人工排查,存在风险,资源过多,人工无法排查
- 两次snapshot对比,合理存在的差异资源
- 泄漏只能到资源层面,到不了对象层面
- 内存产生的资源对象,是无法查到, 比如RT
- 没达到所有资源都在框架释放