Android / iOS app内存限制(澄清)& Adobe Air

时间:2011-09-14 11:32:17

标签: android ios memory air

我一直在搜索这些论坛,了解对使用flex SDK创建并在Android / iOS中运行的应用程序施加的内存限制。 我在这里查看了以下帖子:

根据我的理解,应用程序的限制高达32MB,但在Android上运行Adobe Air应用程序可以给我带来超过32MB的空间。 关于RAM,堆和“ROM”的这些概念我很困惑。不是所有那些都一样吗? 基本上,我想知道的是一个进程真正访问了多少“RAM”?

根据我在Android上的测试,我认为它是以下各项的总和:

  • 32 MB堆空间。
  • 操作系统通过查杀优先级较低的应用程序(?)来回收共享内存。
  • 可用内存量。

我还在iOS上进行了一些测试(使用flex SDK打包的应用程序),似乎在iPad(256MB RAM)上,应用程序在获得大约150 MB的RAM后崩溃。

如果有人能给我一些澄清,我将不胜感激,我主要是在寻找以下问题的答案:

  1. 在Android上,每个应用程序的限制是否仍为16,24,32MB?
  2. 如果是,那么有人知道Air运行时是否使用C代码来访问更多RAM? (我也会在Adobe论坛上查看这个。)
  3. 如果没有限制或者我误解了它,那么进程可以访问的“RAM”的实际最大数量是多少,它是我上面提到的元素的总和还是有其他一些公式?
  4. 有没有人知道iOS平台的限制(每个应用程序的最大内存量)?
  5. 感谢。

2 个答案:

答案 0 :(得分:4)

是的,每个应用程序的内存限制仍然很好。在android中,每个应用程序都有自己的VM实例,因此它自己的堆内存(不与其他应用程序共享)具有一定的固定大小。分配给应用程序的堆内存大小由制造商设置,因此从移动设备到移动设备各不相同,具体取决于设备,介于16MB和64MB之间。 通过在清单文件属性中包含 android:largeHeap =“true”,可以将特定应用程序的堆大小加倍(尽管强烈建议不要这样做)。所以我假设'Adobe Air'应用就是这么做的。

当你关闭一个应用程序时,android并没有真正杀死它。该应用程序在后台运行,以便下次打开时可以快速加载。因此,只有部分ur设备的RAM分配给每个应用程序,因此每个应用程序都有硬限制。

我对iOS没有任何线索!

答案 1 :(得分:0)

我有一个基于C ++的iOS游戏,有时会使用太多我的iPad 1的256MB RAM,它会被操作系统停止。因此,iOS的限制基本上是OS + app(估计为160MB)。需要注意的是,当我运行它时,我会停止其他应用程序,因此在后台没有其他任何应用程序运行。