安卓存储类型(RAM与内部存储)

22
在一个单独的线程中,我展示了我对内存类型的无知,询问将文件复制到“内部存储器”的最佳方法,并被告知这不是一个好主意,最好将文件读入“RAM”。现在我正在尝试理解这两种类型的存储器之间的关系以及如何使用它们。
我知道,“内部存储器被认为是用于存储APK、ROM映像等的闪存”。
我的HTC Hero的规格说明显示“ROM:512MB,RAM:288MB”,没有显示RAM如何细分。
在手机上,“设置”->“SD卡和电话存储”页面仅提到“SD卡”和“内部电话存储”,对于后者只显示一个“可用空间”的数量。
Android参考资料中提到了数据存储,其中提到了“内部存储”。这是一个“你可以保存文件的地方”。该页面还提到SQLite数据库文件,我认为它们可以存储在“内部存储器”中。然而,该页面似乎没有提供有关RAM在内部存储器和另一种(可能更动态)类型之间的子分区的任何解释。
是否存在某种动态划分总RAM(Hero上的288MB)为两个子分区,可以以不同的方式使用?如果是这样,在Android文档的哪里可以找到这个解释?
1个回答

41
我了解“内存”被认为是用于存储APK、ROM映像等的闪存。我的HTC Hero规格说明显示:“ROM:512MB,RAM:288MB”,没有指明RAM如何细分。
RAM不会按照永久性的方式进行“细分”。RAM根据需要为运行进程使用。对SDK应用程序来说,最重要的是要注意有一个上限,即进程可以消耗多少RAM,在您的Hero上,应该是16MB。
在手机中,“设置”->“SD和电话存储”页面只提到“SD卡”和“内部电话存储”,对于后者,仅显示“可用空间”的一个数量。
“内部电话存储”是指保留给APK文件、数据库、偏好设置和其他本地文件的板载闪存空间的一部分。
该页面还提到SQLite数据库文件,我认为它们可以存储在“内部存储器”中。
正确。
然而,该页面似乎没有对RAM在内部存储器和另一种(可能更动态)类型之间划分的任何解释。
RAM与内部存储无关。
总的来说,RAM就是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
2
“只读存储器”维基百科文章中提到,“EPROM和闪存EEPROM等现代类型可以多次擦除和重新编程;它们仍被描述为“只读存储器”(ROM)[需要引证],因为重新编程过程通常不频繁,相对较慢,并且通常不允许对单个存储位置进行随机访问写入。”我可以理解为什么我认为这不是存储用户数据的地方! - prepbgg
1
@prepbgg: "如果这是闪存RAM,我必须说ROM是一个非常令人困惑的描述方式!" - 据我所知,没有“闪存RAM”这种东西。 "我是否正确地理解,我的手机设置中显示的“SD卡和手机存储”是“ROM”的一部分,并且设置页面不提供有关RAM的信息?" - 正确。 "RAM的管理完全由操作系统处理,对用户和程序员来说完全不可见吗?" - 一般情况下,是的。 - CommonsWare
我正在尝试将你的答案与这个链接连接起来: http://www.addictivetips.com/mobile/android-partitions-explained-boot-system-recovery-data-cache-misc/ 因此,链接中的分区必须是你提到的ROM(闪存存储)的分区。 - Jake
在我看来,这个答案可以通过关注OP的核心困惑而大大简化:Android的“内部存储”并不是指RAM。RAM不是一种存储选项;你不会直接引用它——它是隐含的——当你的应用程序正在运行时,它是你的应用程序Java对象所在的地方。每当你的应用程序“读取”(从文件、首选项或数据库中)数据时,数据都会从存储设备复制到RAM中。当你的应用程序“写入”时,它会从RAM中复制回存储设备。 - ToolmakerSteve
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接