You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同代码下OpenGL ES 2.0在Android漏显存iOS正常的排查求助

Android NDK游戏稳定性及显存泄漏问题排查求助

我开发了一款基于Android NDK的游戏,部分基于已停止维护的开源引擎Cocos2d-x搭建,多数引擎逻辑为自定义,仅OpenGL上下文配置、Java桥接及事件处理等采用现成方案。

目前游戏出现严重稳定性问题,我耗时一周调试仍未定位问题,已尝试以下方案:

  • 使用配套旧版NDK编译
  • 降级至兼容的最旧SDK
  • 启用HWASan
  • 开启CheckJNI
  • 审计所有JNI桥接代码

崩溃表现差异较大:

  • 连接调试器时,几乎1秒内于Android运行时崩溃,常与垃圾回收或JNI桥接相关
  • 未连接调试器时,有时能稳定运行
  • 启用HWASan且手机OpenGL使用ANGLE库时,偶尔在ANGLE库中崩溃
  • 有时会出现显存泄漏最终导致崩溃,有时则无泄漏

需说明的是,游戏在除Android外的其他平台均稳定,95%代码为共享C代码。我甚至注释掉C业务代码,仅保留引擎原生代码,游戏仍会黑屏崩溃。

我正考虑迁移至SDL以获得支持,希望得到此类问题的排查建议。

更新:

我认为连接调试器时的崩溃是引擎配置的独立问题。生产环境中,问题似乎是帧缓冲或纹理的OpenGL显存未释放回系统。需注意iOS端同代码无此问题,推测与共享上下文或驱动机制有关。仅解决该显存问题的方案也可接受。

结论

Android开发体验糟糕,后台线程中的随机非纹理相关绘制调用会直接导致泄漏。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:32:32