3.15.1 Android纹理占用太高导致crash?

cocos2d-js 3.15.1
ndk r11

游戏跑着抛着就崩了, 纹理大小大概300M吧, 感觉像是纹理占用过高之后, 新加载的纹理数据是空的.
加载时使用的 addImageAsyn 方法

********** Crash dump: **********
Build fingerprint: 'samsung/chagallwifizc/chagallwifi:4.4.2/KOT49H/T800ZCU1ANI1:user/release-keys'
pid: 21407, tid: 21434, name: Thread-1248  >>> com.moloong.taiji <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
Stack frame                                                        #00  pc 01f52568  /data/app-lib/com.moloong.taiji-6/libcocos2djs.so (cocos2d::Texture2D::convertRGB888ToRGBA8888(unsigned char const*, int, unsigned char*)+76): Routine cocos2d::Texture2D::convertRGB888ToRGBA8888(unsigned char const*, int, unsigned char*) at F:/xyjphone/XYJGame/frameworks/cocos2d-x/cocos/./renderer/CCTexture2D.cpp:282
Stack frame                                                        #01  pc 01f550d0  /data/app-lib/com.moloong.taiji-6/libcocos2djs.so (cocos2d::Texture2D::convertRGB888ToFormat(unsigned char const*, int, cocos2d::Texture2D::PixelFormat, unsigned char**, int*)+164): Routine cocos2d::Texture2D::convertRGB888ToFormat(unsigned char const*, int, cocos2d::Texture2D::PixelFormat, unsigned char**, int*) at F:/xyjphone/XYJGame/frameworks/cocos2d-x/cocos/./renderer/CCTexture2D.cpp:928
Stack frame                                                        #02  pc 01f55764  /data/app-lib/com.moloong.taiji-6/libcocos2djs.so (cocos2d::Texture2D::convertDataToFormat(unsigned char const*, int, cocos2d::Texture2D::PixelFormat, cocos2d::Texture2D::PixelFormat, unsigned char**, int*)+228): Routine cocos2d::Texture2D::convertDataToFormat(unsigned char const*, int, cocos2d::Texture2D::PixelFormat, cocos2d::Texture2D::PixelFormat, unsigned char**, int*) at F:/xyjphone/XYJGame/frameworks/cocos2d-x/cocos/./renderer/CCTexture2D.cpp:1063
Stack frame                                                        #03  pc 01f549f4  /data/app-lib/com.moloong.taiji-6/libcocos2djs.so (cocos2d::Texture2D::initWithImage(cocos2d::Image*, cocos2d::Texture2D::PixelFormat)+824): Routine cocos2d::Texture2D::initWithImage(cocos2d::Image*, cocos2d::Texture2D::PixelFormat) at F:/xyjphone/XYJGame/frameworks/cocos2d-x/cocos/./renderer/CCTexture2D.cpp:799

对应代码如下

调试了一下 加载的纹理没有问题 这个问题应该是内存不足 RGB转RGBA的时候 outTempData malloc失败造成的.

同理 在crash之前load的时候内存不足会输入日志 debug info: cocos2d: failed to call TextureCache::addImageAsync
渲染时会输出日志 debug info: cocos2d: Texture2D: Error uploading compressed texture level: 0 . glError: 0x0505

300M的png图片全部转换到内存估计有1600M,估计大部分手机都会崩掉。android试试ETC格式图片。http://mp.weixin.qq.com/s/x3mcBCXEKttyFdF8YWlntg

我是说300M内存, 原因找到了, 正式上的时候肯定是用etc的, 哈哈

hi, 楼主,麻烦点一下原因是什么? 我也遇到了同样的问题