就像标题所说,我是否应该围绕16 MB的堆大小限制设计我的应用程序?我问的原因是我最近开发的游戏在我近2岁的Droid 2上运行良好。但是当我使用16 MB堆大小限制的AVD测试我的应用程序时,我出现了内存错误。使用DDMS监视我的应用程序显示为我的游戏分配的总内存大约为20 MB。这不是一个巨大的差异,但让我的游戏在16 MB的限制下工作会真的伤害视觉效果。
现在,如果这是2008年,我甚至不会问这个问题。但它是2012年,即G1首次亮相后近4年。可以肯定地说,过去一年制造的大多数手机都允许应用程序分配超过16 MB的内存吗?或者我是不是因为没有设计我的16 MB MB限制应用程序来搞砸自己?
答案 0 :(得分:6)
堆限制因设备分辨率(可能还有其他因素)而异。因此在高分辨率设备上,堆限制可能是30MB,而在低分辨率G1上则是16MB。通常,您应该相应地更改图形,以便低分辨率设备使用低分辨率图形(占用更少的空间),高分辨率设备使用高分辨率图形(占用更多空间)。
答案 1 :(得分:2)
是的,我们仍然需要它,但并非在每种情况下都需要它。 如果您使用的是本机代码,那么由c编译器分配的内存不包含在此限制中。因此,您可以为应用程序必需组件提供更多内存。 第二种方法是使用Texture使用OpenGL绘制图像。然后这些纹理的内存不包含在有限的内存中。
但是这些技术无法在每种情况下实施
更重要的是,你不能完全使用这些30 MB。只有30%可用于一个应用程序。