【问题标题】:Android memory model/map What does it look like and how is it used?Android内存模型/映射它是什么样子的,它是如何使用的?
【发布时间】:2012-07-08 20:22:47
【问题描述】:

一个一般性问题,以确保我了解或不了解 Android 手机中的内存。 您的操作系统使用内存 (FLASH/ROM),通常分区为 .5、1、2、4GB 取决于电话。除非root,否则开发人员无权访问它。

操作系统分区是从一个板载 FLASH 中分割出来的,比如说 8GB。 从 8GB 开始,为应用程序/apks 预留了一个分区......可能从 1 到 2 GB。 其余部分留作 FLASH 中的 DATA 存储区域,供用户存储 UserPrefs 存储的任何内容和位置。

问题一。当应用程序运行时,各种对象/项目被创建和访问,并且可能被写入数千/数百万次。 FLASH 太慢了,所以必须有一些 RAM 发挥作用。那是我看到的 16MB 数字吗?这里是缓存吗?

问题二。我有例程/方法告诉我可以免费使用外部 SD,并且我有例程似乎显示 FLASH/ROM 可用于应用程序存储。但我看到另一个数字显示在提到 RAM 的设置中。我如何找到可用的数量?

问题三:我的目标是存储少量 500k 图像,首先检查 SD 是否可用并且那里可写存储。如果在可以安装 SD 卡之前不存储在内部(如果可以的话)。如果有 RAM 区域,我如何访问它并判断我是否有足够的空间来临时存储?

  My current understanding of Android internal memory layout/map/arrangement
  8GB FLASH/ROM installed.
   OS partition uses 1GB
   App/Apks storage uses 2GB
   Data Storage uses remainder 4.5GB, SQlite Db is store here.

   RAM is where??
   Cache is where??

【问题讨论】:

    标签: android memory


    【解决方案1】:

    16MB 数字可能只是分配给应用程序的堆空间。不是设备拥有的 RAM。只需快速搜索 SO,我就找到了 Android Heap Size on Different PhonesHow To Check Availability of External Storage Space

    【讨论】:

    • 好的。所以缓存也存储在闪存/ROM中,并且没有动态内存中的内存(可能除了GPU)。您提供的答案链接很有帮助。他们提供了我可以和应该使用多少。这当然留下了一个明显的问题,即当我运行时,我使用什么代码来找出我正在使用多少内存?
    • 您是在谈论您的位图将在您的应用程序中使用多少内存?您打算在设备上显示图像还是只是移动它们(例如从云端下载并只显示较小的缩略图)?
    • 如果我知道我在哪个内存级别,那就太好了。但是这个数字并没有告诉我我当前的应用程序使用情况是什么。这就是我需要知道的最后一部分,这样我就可以选择如何减少或控制应用程序的内存使用量。那么我猜我使用了多少堆?
    猜你喜欢
    • 2021-08-01
    • 2012-03-28
    • 2011-08-06
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多