# 内存调优

在开发微信小游戏的过程中,开发者往往会遇到很多内存问题,如内存泄漏或者内存溢出等,运行时内存占用过大是影响游戏稳定性最大的因素,需要开发者足够重视。

# 现网数据:为什么要做小游戏内存优化?

小游戏数据助手:“小游戏数据助手”是微信发布的官方小程序,支持相关的开发和运营人员查看自身小游戏的运营数据。

为了能让开发者掌握游戏的运行性能数据,小游戏框架底层会对现网玩家进行一定概率的采样,采样量可以通过趋势数据勾选得到。需要上报性能数据的玩家会以一定时间间隔(目前为1分钟)上报数据,比较准确地反应玩家真实的游戏体验情况。最终呈现在小游戏数据助手应用中的“数据-性能分析”。

# 内存问题

通过小游戏数据助手应用中的“数据-性能分析-运行性能”开发者可以了解到许多内存相关的数据指标:内存均值趋势、内存区间分布、内存随时间变化情况、内存Crash率与人数等。通过对目前移动设备分析我们发现,Android基本已经极少低内存(<1G>)设备,而iOS低档机型依然存在约10%-15%的比例,因此如果要保持小游戏在这些设备下依然稳定,我们则必须优化内存使用。

# 关于OOM与内存告警

我们知道,通常设备在遇到内存不足时会采取一定的策略进行内存释放甚至KILL掉进程,以保证设备整体的可用性,如上图为典型的iOS设备OOM阈值。

注意:在iOS下小游戏与微信客户端是处于同进程,两者总内存达到OOM阈值(如上图)时非常容易被系统KILL掉。小游戏在遇到系统内存紧张时会产生wx.onMemoryWarning回调,连续多次收到系统内存告警时会主动进行小程序的销毁。

通过分析,我们发现许多小游戏在iOS的内存异常退出率偏高(尤其是低端机)。如果你在小游戏数据助手应用中的“数据-性能分析”发现自己的小游戏内存Crash率过高,那么就需要着手优化小游戏的内存使用。

# 优化工具与方案

通常,我们可以在开发、测试与现网阶段用以下工具帮助我们进行内存调优。