Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java,获得更多允许的内存使用_Java_Android_Memory_Memory Management - Fatal编程技术网

Android java,获得更多允许的内存使用

Android java,获得更多允许的内存使用,java,android,memory,memory-management,Java,Android,Memory,Memory Management,我正在为android创建这个游戏,我对内存使用有一些疑问。当我们无知地编写代码时,我们的应用程序使用了大约40mb的内存,但这导致测试手机崩溃(Xperia Arc(某物,某物)),内存不足。然后我们用内存对它进行了更智能的编码,达到了20MB左右。我们在谷歌上搜索了很多,我们看到很多人发布的帖子说,大多数手机限制在16MB,其他手机限制在32MB。但是,我们还与其他应用程序(如愤怒的小鸟)进行了比较,它们使用了大约129个内存(在Xperia arc上运行良好,我们的应用程序崩溃超过32MB

我正在为android创建这个游戏,我对内存使用有一些疑问。当我们无知地编写代码时,我们的应用程序使用了大约40mb的内存,但这导致测试手机崩溃(Xperia Arc(某物,某物)),内存不足。然后我们用内存对它进行了更智能的编码,达到了20MB左右。我们在谷歌上搜索了很多,我们看到很多人发布的帖子说,大多数手机限制在16MB,其他手机限制在32MB。但是,我们还与其他应用程序(如愤怒的小鸟)进行了比较,它们使用了大约129个内存(在Xperia arc上运行良好,我们的应用程序崩溃超过32MB)

我的问题是:我们是否能以某种方式使用超过16/32MB的内存,或者使用更多内存的应用程序是如何做到的


有些人说,如果这是真的,您可以使用其他进程来处理内存,并为该进程再获得16/32MB。这对一个普通程序员来说是可行的吗?

我知道G1只能为应用程序提供16mb的容量,但这是一个非常古老的版本。大多数流行的设备都可以提供32/64mb。内存量始终取决于屏幕大小


in manifest.xml正是您想要的,但我从未使用过它。在不同的设备中,这种属性的影响是不同的。

预蜂巢:愤怒的小鸟和很多游戏在Android NDK中使用本地C++代码进行编程或内存分配。如果您在JVM之外分配内存,它不会计入堆限制,所以您只受到硬件的限制。当然,问题是,内存管理完全由您负责


蜂巢及以上:正如费隆所建议的,android:largeHeap是一种将堆限制扩大到真正大的方法,尽管你仍处于手机制造商的限制之下。他们对“largeHeap”的解释可能是64MB而不是32MB,或者理论上他们不会给你。因此,您必须结合使用它来确保您的内存可用。NDK选项仍然可用。

将其作为应用程序的属性放入清单中

android:largeHeap="true"
对于像我这样需要快速回答的人