2011-09-14 71 views
4

我一直在搜索這些論壇,以瞭解針對使用flex SDK創建的應用程序的內存限制的想法,並在Android/iOS中運行。 我已經看着下面的帖子在這裏:Android/iOS應用程序內存限制(澄清)和Adobe Air

據我瞭解有一個高達32MB的限制上的應用程序,但是運行的Adobe空氣Android上的應用程序授予我超過32MB。 關於這些RAM,堆和「ROM」的概念我很困惑。這些不一樣嗎? 基本上,我想知道的是一個進程真正可以訪問多少「RAM」?

從我在Android上的測試,我認爲這是以下項目的總和:

  • 32 MB的堆空間。
  • 操作系統通過殺死低優先級應用程序(?)回收共享內存。
  • 可用內存量。

我也做了一些iOS測試(使用flex SDK打包的應用程序),看起來在iPad(256MB RAM)上,應用程序在獲取大約150 MB RAM後崩潰。

我將不勝感激,如果有人可以給我提供了一些澄清,我主要是尋找答案FHE以下問題:

  1. 在Android上,每個應用程序還是這16,24,32MB限制的地方嗎?
  2. 如果是,那麼是否有人知道Air運行時是否使用C代碼來訪問更多的RAM? (我也會在Adobe論壇上查看)。
  3. 如果限制不存在或者我誤解了它,一個進程可以訪問的「RAM」的實際最大數量是多少?是我上面提到的元素的總和還是有其他一些公式?
  4. 有誰知道iOS平臺的限制(每個應用程序的最大內存量)?

謝謝。

+0

對於iOS少於4.0的限制是每個應用40Mb。 – beryllium

+0

在4.1上我可以看到使用儀器,一個應用程序將在60 Mb時被殺死。不能提供任何官方文檔。 – huesforalice

回答

4

是的,每個應用的內存限制仍然很好。在android中,每個應用程序都有自己的虛擬機實例,因此它有自己的堆內存(不與其他應用程序共享),具有一定的固定大小。分配給應用程序的堆內存大小由製造商設置,因此根據移動設備的不同而不同,具體取決於設備,大小在16MB到64MB之間。 通過在清單文件屬性中包含android:largeHeap =「true」(儘管強烈建議您不要這樣做),特定應用程序的堆大小可以加倍。所以我假設'Adobe Air'的應用程序做到這一點。

當你關閉一個應用程序時,android並不會真正殺死它。該應用程序在後臺運行,以便下次打開它時可以快速加載。所以,只有一部分的設備的RAM分配給每個應用程序,因此對每個應用程序都有嚴格的限制。

雖然我對iOS沒有任何線索!

0

我有一款基於C++的iOS遊戲,偶爾會使用我的iPad 1的256MB內存,而且它會被操作系統阻止。所以iOS上的限制基本上是OS +應用程序(估計爲160MB)。提到我有點停止其他應用程序,當我運行它,所以沒有別的在後臺運行。