微信小游戏高性能模式下,部分ios16系统会出现资源回收异常,报错“The texture already destroyed”。但是关闭高性能就正常了。有人遇到过吗?是什么原因导致的?
微信小游戏高性能模式开启后,会对内存和渲染性能做出优化,例如会使用 iOS Metal 渲染API替代原有的OpenGL ES。但是这也会导致一些不兼容的问题。
关于你提到的“texture already destroyed”错误,这通常是由于当某个纹理(texture)已经被销毁时,仍然在其他地方尝试使用它导致的。在高性能模式下,由于渲染流程的优化,这种情况可能会更容易出现。一些常见的原因包括:
- 对象被提前销毁:可能是由于对象的引用计数管理不当或对象生命周期不正确导致。
- 内存管理问题:例如使用了已经被释放的内存地址。
- 渲染资源的复用:在某些情况下,已经被销毁的资源可能会被重新使用,这可能会导致访问已经被释放的内存。
解决这个问题需要对代码进行详细的调试和分析。你可以尝试以下几个方面:
- 确保所有的对象生命周期正确:当对象不再需要时,要及时进行销毁操作。
- 确保正确的内存管理:避免使用已经被释放的内存地址,确保内存分配和释放操作正确。
- 确保纹理复用时正确管理:确保已经被销毁的纹理不会被复用或访问。
- 尝试关闭高性能模式:在部分 iOS 16 系统出现问题时,关闭高性能模式可能会解决问题。
目前关闭高性临时解决,目前是每次报错的资源都不太一样。所以无法准确定位问题。目前在其他模式下,或者大部分高性能机型下都是正常的。所以无法确定知道是内存泄漏,还是本身bug导致。脑壳痛