22

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

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

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

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

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

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

4

1 回答 1

41

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

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

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

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

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

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

正确的。

但是,该页面似乎没有对内部存储和另一种(可能更动态的)类型之间的 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 卡,尽管它实际上可能只是板载闪存存储的另一个分区,指定用作外部存储贮存
于 2011-01-08T16:26:59.670 回答