3.x 小程序端 ios间歇性卡顿问题

如题:我们的中重度项目,在发布到微信小游戏时,发现不论低端iPhone还是高端iPhone,均出现了每n秒卡顿一次,Renderer渲染高出几倍的耗时现象,然后在下一帧恢复正常。安卓机型没有发现此问题(或者安卓的耗时很短没有看出来)。怀疑是GC引起的,因为我们针对怪物的缓存池数量以及粒子的最大粒子量的减少后,卡顿时的Renderer耗时会减少很多。所以怀疑是内存回收引起的渲染暴涨。麻烦引擎组测试下iphone的性能问题哈。辛苦拉~ :slightly_smiling_face:

微信小游戏在 iPhone 上是沿用了 iOS 系统的内存管理机制,并且微信app和小游戏共占内存空间容量上限

在 iOS 上,当微信客户端在一定时间间隔内(目前是 5 秒)连续收到两次及以上系统内存告警时,会主动进行小程序的销毁,并提示用户 「该小程序可能导致微信响应变慢被终止」。建议开发者注册 wx.onMemoryWarning 监听内存告警事件,并在在收到一次内存告警后,调用一次 wx.triggerGC 清理内存,降低小程序被销毁的概率。

即微信小游戏在运行过程中会自动检测内存使用情况,在内存超出安全阈值时,会触发 *onMemoryWarning*并主动尝试释放内存,此过程以5秒间隔周期性执行,会造成周期性掉帧。
根据微信小游戏官方文档说明,各机型内存限制如下:

该问题的解决方式
总原则小游戏内存+微信app内存 <=安全阈值。参照最低支持的目标机型阈值设定内存使用容量.

  1. 建议使用压缩纹理,精简模型,减小纹理分辨率等方式减小内存占用。
  2. 如使用缓存池对象,需控制缓存对象数量。