Android/iOS 应用程序内存限制(澄清)和 Adob​​e Air

标签 android ios memory air

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

据我所知,应用程序有高达 32MB 的限制,但是在 Android 上运行 Adob​​e Air 应用程序给我的容量超过 32MB。 我对 RAM、堆和“ROM”的这些概念感到很困惑。这些不都一样吗? 基本上,我想知道一个进程真正可以访问多少“RAM”?

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

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

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

如果有人能向我提供一些说明,我将不胜感激,我主要是在寻找以下问题的答案:

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

谢谢。

最佳答案

是的,每个应用程序的内存限制仍然有效。在 android 中,每个应用程序都有自己的 VM 实例,因此有自己的固定大小的堆内存(不与其他应用程序共享)。分配给应用程序的堆内存大小由制造商设置,因此因移动设备而异,根据设备的不同,介于 16MB 和 64MB 之间。 通过在 list 文件属性中包含 android:largeHeap="true" 可以使特定应用程序的堆大小加倍(尽管强烈建议您这样做)。所以我假设“Adobe Air”应用程序可以做到这一点。

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

虽然我对 iOS 一无所知!

关于Android/iOS 应用程序内存限制(澄清)和 Adob​​e Air,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7415633/

相关文章:

android - unity project as library和android project后manifests出现错误

android - 使用 Maven 时没有可用的主题

ios - 如何从另一个 View Controller 更改 UILabel 一个 View Controller ?

c - 在 Mac OS X 上映射一个 block 设备?

windows - 在运行 Windows XP 的 Intel x86 机器上,内存位置 1 是什么?

memory - 在 Linux 内核中分配超过 4 MB 的固定连续内存

android - 基于 RSSI 估计信标接近/距离 - 蓝牙 LE

c# - 在 mvvmcross 中的 View 模型之间传递多态类型

ios - Swift:初始化参数未解析

ios - URL 中编码 "&"的问题