安卓Java,如何获取更多允许的内存使用量

4
我正在为Android创建这个游戏,我有几个关于内存使用的问题。当我们在无知中编码时,我们的应用程序使用了大约40MB的内存,但这使得测试手机崩溃(Xperia Arc(某些东西)),因为它超出了内存限制。然后我们更加智能地编写了内存代码,并降低到了20MB左右。我们已经进行了很多谷歌搜索,看到一些人发帖说大多数手机都限制在16MB或32MB以内。但是,我们也与其他应用程序进行了比较,如愤怒的小鸟,其使用了约129MB的内存(可以在Xperia Arc上正常运行,而我们的应用程序在32MB以上会崩溃)。
我的问题是:我们是否可以以某种方式使用超过16/32 MB的内存,或者那些使用更多内存的应用程序是如何做到的?
有些人说,您可以使用其他进程来处理内存并获得另外16/32 MB的内存,如果是这样的话。那对于普通程序员来说,这是否可行?
3个回答

3

请将以下内容加入您的manifest文件中,作为应用程序属性:

android:largeHeap="true"

对于像我这样需要快速答案的人


3
我知道G1只提供16MB的应用程序空间,但它是一款非常老的设备。大多数流行的设备都可以提供32/64MB。可用内存量始终取决于屏幕大小。
manifest.xml中的android:largeHeap就是你想要的,但我从未使用过它。据说这个属性的效果因设备而异。

3

在Honeycomb版本之前:Angry Birds和很多游戏都使用Android NDK中的本地C++代码进行编程或内存分配。如果您在JVM之外分配内存,则不会计入堆限制,因此您仅受硬件限制。当然,问题在于,您需要自行负责内存管理。

在Honeycomb及以上版本:正如faylon所建议的那样,android:largeHeap是扩展堆限制到非常大的方式,尽管您仍受手机制造商的限制。他们对“largeHeap”的解释可能是64MB而不是32MB,或者从理论上讲,他们可能不会给予您。因此,您必须与getLargeMemoryClass()一起使用,以确保您的内存可用。NDK选项仍然可用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接