微信小游戏高性能模式下,部分ios16的系统会出现资源回收异常

微信小游戏高性能模式下,部分ios16系统会出现资源回收异常,报错“The texture already destroyed”。但是关闭高性能就正常了。有人遇到过吗?是什么原因导致的?

微信小游戏高性能模式开启后,会对内存和渲染性能做出优化,例如会使用 iOS Metal 渲染API替代原有的OpenGL ES。但是这也会导致一些不兼容的问题。

关于你提到的“texture already destroyed”错误,这通常是由于当某个纹理(texture)已经被销毁时,仍然在其他地方尝试使用它导致的。在高性能模式下,由于渲染流程的优化,这种情况可能会更容易出现。一些常见的原因包括:

  1. 对象被提前销毁:可能是由于对象的引用计数管理不当或对象生命周期不正确导致。
  2. 内存管理问题:例如使用了已经被释放的内存地址。
  3. 渲染资源的复用:在某些情况下,已经被销毁的资源可能会被重新使用,这可能会导致访问已经被释放的内存。

解决这个问题需要对代码进行详细的调试和分析。你可以尝试以下几个方面:

  1. 确保所有的对象生命周期正确:当对象不再需要时,要及时进行销毁操作。
  2. 确保正确的内存管理:避免使用已经被释放的内存地址,确保内存分配和释放操作正确。
  3. 确保纹理复用时正确管理:确保已经被销毁的纹理不会被复用或访问。
  4. 尝试关闭高性能模式:在部分 iOS 16 系统出现问题时,关闭高性能模式可能会解决问题。

目前关闭高性临时解决,目前是每次报错的资源都不太一样。所以无法准确定位问题。目前在其他模式下,或者大部分高性能机型下都是正常的。所以无法确定知道是内存泄漏,还是本身bug导致。脑壳痛