android dalvik内存限制?内存不足异常

时间:2013-01-26 11:04:05

标签: android android-emulator opengl-es-2.0 out-of-memory

加载5M尺寸的3D OBJ模型时内存不足。 debug显示dalvik在仿真器或设备上有50M内存限制。我不明白为什么会这样。

mIndicesInt = ByteBuffer.allocateDirect(indices.length * INT_SIZE_BYTES).order(ByteOrder.nativeOrder()).asIntBuffer();
mIndicesInt.put(indices).position(0);

我甚至将AVD RAM增加到2048M并堆积到1024M,它没有帮助。它始终以相同的数字停止:

  

D / setIndices(2270):内存:Pss = 67.88 MB,私有= 66.09 MB,共享= 13.30 MB   D / setIndices(2270):maxMem = 50331648   D / setIndices(2270):totalMem = 50208736   D / setIndices(2270):freeMem = 1963736

OBJ模型包含20个以上的对象。我删除了几个对象,然后内存不足问题消失了,所以这是每个进程的内存硬限制问题?

有关处理它的任何建议吗? 另外AVD optioins增加RAM和堆大小没有影响,为什么?

1 个答案:

答案 0 :(得分:0)

对于移动环境来说,5M的顶点数据非常多。如果您还要加载纹理,请考虑仅加载压缩纹理。一旦移动到GPU驱动程序,您还可以释放一些资源。我会离线准备你的顶点数据,只在运行时加载所需的数据。另一种选择是计算部分数据,或直接在顶点/片段着色器处展开(例如,在GPU侧生成bitangents)。