Android 内存类型(RAM v 内部存储器)

Posted

技术标签:

【中文标题】Android 内存类型(RAM v 内部存储器)【英文标题】:Android memory types (RAM v Internal Memory) 【发布时间】:2011-06-05 19:22:35 【问题描述】:

在separate thread 上,我通过询问将文件复制到“内部存储器”的最佳方法来证明我对内存类型的无知,并被告知这不是一个好主意,最好读取文件进入“RAM”。我现在正试图了解这两种类型的内存是如何相关的以及如何使用它们。

我理解“内部存储器被认为是用于存储 APK、ROM 映像等的闪存”

我的 HTC Hero 的规格说有“ROM:512MB,RAM:288MB”,但没有说明 RAM 是如何细分的。

在手机上,“设置”->“SD 和手机存储”页面仅指“SD 卡”和“手机内部存储”,后者仅显示“可用空间”数量。

Data Storage 的 android 参考提到“内部存储”。这是一个“可以保存文件”的地方。该页面还提到了我认为可以存储在“内部存储”中的 SQLite 数据库文件。但是,该页面似乎没有对内部存储和另一种(可能更动态的)类型之间的 RAM 细分提供任何解释。

是否存在某种动态划分,将总 RAM(Hero 上为 288MB)分成两个可以以不同方式使用的子部分?如果是这样,Android 文档中的哪个位置对此进行了解释?

【问题讨论】:

【参考方案1】:

我理解“内部存储器被认为是用于存储 APK、ROM 映像等的闪存”

我的 HTC Hero 的规格说有“ROM:512MB,RAM:288MB”,但没有说明 RAM 是如何细分的。

RAM 不会以任何形式永久“细分”。 RAM 用于根据需要运行进程。 SDK 应用需要注意的最重要的一点是,一个进程可以消耗多少 RAM 有一个上限——在您的 Hero 上,它应该是 16MB。

在手机上,“设置”->“SD 和手机存储”页面仅指“SD 卡”和“手机内部存储”,后者仅显示“可用空间”数量。

“手机内部存储”是指为 APK 文件、数据库、偏好设置和其他本地文件预留的板载闪存空间部分。

该页面还提到了我认为可以存储在“内部存储”中的 SQLite 数据库文件。

正确。

但是,该页面似乎没有对内部存储和另一种(可能更动态的)类型之间的 RAM 细分提供任何解释。

RAM 与内部存储无关。

是否可以将总 RAM(Hero 上为 288MB)动态划分为两个可以以不同方式使用的细分?

没有。


让我们退后一步。

RAM 是 RAM 是 RAM。手机上的 RAM 与台式机、笔记本电脑、上网本等上的 RAM 没有太大区别。在过去的几十年里,这种结构的使用一直保持相对稳定,尤其是在我们脱离大型机之后。运行程序(操作系统和最终用户应用程序)会消耗 RAM,但仅在它们运行时才会消耗。重新启动时,手机和桌面上的 RAM 都会被擦除。

现在,您的普通台式机、笔记本电脑或上网本也有一个硬盘驱动器,可提供比 RAM 提供的更多永久存储空间。在 Android 中没有绝对的等价词——我倾向于使用“板载闪存”来表示它,其他人称之为“内部存储”,尽管如您所见,后一个术语充满了混淆。就像硬盘一样,板载闪存存储用于操作系统(又名 Android 中的固件)、最终用户程序(又名 Android 中的 APK 文件)和最终用户数据(又名数据库、共享首选项、以及存储在getFilesDir() 所在位置的其他文件)。

板载闪存分为几个分区。如果您是 Windows 用户,分区基本上是在说“您的硬盘驱动器分为 C:、E: 和 F: 驱动器”。在 Android 中,一个分区专用于固件,另一个分区(“数据分区”)专用于最终用户程序和数据。 (注意:前面的描述并不完全准确,但差异远远超出了此答案的范围)。

所以,考虑到所有这些:

您的 512MB ROM 是板载闪存,这与旧的“闪存 ROM”术语相呼应 您的“手机内部存储”设置为最终用户应用程序和数据的数据分区中的可用空间(我不使用此术语将板载闪存存储称为整体) 您的“SD 卡”在 Android 中更一般地称为外部存储,在许多设备上它是某种形式的 SD 卡,尽管它实际上可能只是指定为在外部存储的作用

【讨论】:

非常感谢这个快速且非常有帮助的答案。我认为让我特别困惑的一件事是我认为(“只读”)ROM 是不可写的。 (如果这是闪存,我必须说 ROM 是一种非常令人困惑的描述方式!)我是否正确理解我手机设置中显示的“SD 和手机存储”是指“ROM”的一部分,并且设置页面没有提供有关 RAM 的信息? RAM 的管理是否完全留给了操作系统,对用户和程序员来说是完全不可见的吗? ***关于“只读存储器”的文章说“更现代的类型,如 EPROM 和闪存 EEPROM 可以多次擦除和重新编程;它们仍然被描述为“只读存储器” (ROM)[需要引用],因为重新编程过程通常不频繁,相对较慢,并且通常不允许对单个内存位置进行随机访问写入。”我明白为什么我认为这里不是是存储用户数据的地方! @prepbgg:“如果这是闪存,我必须说 ROM 是一种非常令人困惑的描述方式!” - 没有“闪存”这样的东西 AFAIK。 “我是否正确理解手机设置中显示的“SD 和手机存储”是指“ROM”的一部分,并且设置页面没有提供有关 RAM 的信息? - 正确的。 “RAM 的管理是否完全留给了操作系统,对用户和程序员来说是完全不可见的吗?” -- 一般来说,是的。 @prepbgg:“我明白为什么我认为这不是存储用户数据的地方!” ——闪存已普遍用于存储大约 15 年。见en.wikipedia.org/wiki/Flash_storage。 我正在尝试将您的答案与此链接联系起来:addictivetips.com/mobile/… 所以,链接中的分区必须是您提到的 ROM(闪存)的分区。

以上是关于Android 内存类型(RAM v 内部存储器)的主要内容,如果未能解决你的问题,请参考以下文章

Android内存泄漏优化总结

DSP在工作时候,程序是在内部ram中,还是存储在外部sdram,然后在运行过程中,将程序实时载入其内部运行

Android开发之内存管理

运行内存RAM是啥

存储器

Android关于RAMROMSD卡以及各种内存的区别