2011-01-08 114 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