2011-01-08 113 views
22

在一个separate thread我展示了我的记忆类型的无知通过询问的最佳方式将文件复制到“内存”,被告知,这不是一个好主意,它将文件读入“RAM”会更好。我现在试图了解这两种类型的内存是如何相关的以及如何使用它们。Android的存储器类型(RAM V内部存储器)

我知道“内部存储器被认为是用来存储APK,ROM映像等的闪存”

我的HTC Hero的规范指出,有“ROM:512MB,RAM:288MB”,没有指示的RAM是如何细分。

在电话上的“设置” - >“SD &电话存储”页面只是指“SD卡”和“内部电话存储”,后者仅显示“可用空间”的一个金额。

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

是否有一种动态的总RAM(英雄288MB)划分为两个子部门,可用于不同的方式吗?如果是这样,在Android文档中的位置解释了这一点?

回答

40

我知道“内部存储器被认为是用来存储APK,ROM图像等的闪存”。

我的HTC Hero的规范指出,有“ROM:512MB,RAM:288MB”,没有指示的RAM是如何细分。

RAM在任何类型的永久性基础上都没有“细分”。 RAM根据需要由运行进程使用。 SDK应用程序要注意的最大问题是,一个进程可以消耗多少内存是有上限的 - 在你的英雄中,它应该是16MB。

在手机“设置” - >“SD &手机存储”页面仅仅指的是“SD卡”和“手机内部存储”,并为后者只显示了“可用空间”的一个量。

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

页也提到,我认为可以存储在“内部存储” SQLite数据库文件。

正确。

然而,网页似乎并没有提供的内部存储和彼此之间的RAM分赛区的任何解释(大概更动态)类型。

RAM无关内部存储。

是否有一种动态的总RAM(英雄288MB)划分为两个子部门,可用于不同的方式吗?


让我们退一步步伐。

RAM是RAM的内存。手机上的RAM与桌面上的RAM,笔记本,上网本等没有太大区别。在过去的几十年里,这种结构在使用上保持相对稳定,特别是一旦我们从大型机中逃出来。正在运行的程序(操作系统和最终用户应用程序)会占用RAM,但只能在运行时使用。内存在重新启动时被擦除,在手机上和桌面上一样多。

现在,您的普通台式机,笔记本电脑或上网本还拥有硬盘驱动器,可以提供比RAM更高的永久存储容量。在Android中没有绝对的术语 - 我倾向于使用“板载闪存”,其他人则称之为“内部存储”,但正如您将看到的那样,后一个词充满了混乱。就像一个硬盘驱动器一样,板载闪存用于操作系统(也就是Android中的固件),最终用户程序(也就是Android中的APK文件)和最终用户数据(又名数据库,共享首选项,和其他getFilesDir()所在的其他文件)。

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

因此,所有考虑到这一点:

  • 你的512MB的ROM是板上闪存存储,似的屏息静听回老“闪存ROM”足月
  • 你的“手机内部存储”将数据分区中的可用空间设置为最终用户应用程序和数据(我不使用此术语来指代板载闪存存储器的原因之一)
  • 您的“SD卡”在Android中更多地被称为外部存储,在许多设备上都是某种形式的SD卡,尽管它实际上可能只是板上的另一个分区指定为外部存储角色的闪存存储
+1

非常感谢您的快速和非常有帮助的答案。我认为让我特别困惑的一件事是,我认为(“只读”)ROM是不可写的。 (如果这是闪存RAM,我必须说ROM是一种非常令人困惑的方式来描述它!)我是否正确理解我的手机设置中显示的“SD和手机存储”是指“ROM”的一部分,而设置页面没有提供关于RAM的信息? RAM的管理是否完全留给了操作系统,对用户和程序员来说是完全不可见的? – prepbgg 2011-01-08 17:14:59