2011-09-14 11 views
4

私は、フレックスSDKで作成され、Android/iOSで動作するアプリケーションに課せられたメモリ制限に関するアイデアについて、これらのフォーラムを検索してきました。私はアプリケーションで最大32メガバイトには限界があることを理解するものからAndroid/iOSアプリのメモリの上限(明確化)とAdobe Air

、しかしにAdobe AIRを実行している: は、私はここで、以下の記事に見てきましたAndroidのアプリが私に32MB以上のものを与えてくれました。 私はRAM、ヒープ、および "ROM"のこれらの概念についてはかなり混乱しています。それらのすべてが同じではありませんか? 基本的に、私が知りたいことは、プロセスが実際にアクセスできるRAMの量ですか?

Android上で私のテストから、私はそれが以下の項目の合計であると仮定:

  • 32メガバイトのヒープ領域を。
  • OSが優先度の低いアプリケーション(?)を強制的に再利用する共有メモリ。
  • 空きメモリの量。

私はiOS(フレックスSDKを使用してパッケージ化されたアプリ)でいくつかのテストを行いましたが、iPad(256MBのRAM)では約150MBのRAMを取得した後にアプリケーションがクラッシュするようです。

誰かが私にいくつかの明確化を提供することができれば、私は感謝される、私は主に以下の質問をFHEする答えを探しています:アンドロイドで

  1. が、代わりに、まだアプリケーションごとに、この16、24、32メガバイトの制限ですか?
  2. もしそうなら、AirランタイムがCコードを使ってより多くのRAMにアクセスしているかどうかは誰にも分かりますか? (私はAdobeのフォーラムでもこれをチェックします)。
  3. 限界が存在しない、または私がそれを誤解した場合、プロセスがアクセスできる「RAM」の実際の最大量は、上記の要素の合計か他の数式ですか?
  4. 誰でもiOSプラットフォームの制限事項を知っていますか(アプリあたりの最大RAM量)ですか?

ありがとうございます。

+0

iOSが4.0未満の場合、制限は1アプリにつき40Mbでした。 – beryllium

+0

4.1では、機器を使用すると、アプリが60Mbで殺されることがわかりました。しかし、公式のドキュメントを提供することはできません。 – huesforalice

答えて

4

はい、各アプリのメモリの制限はまだ有効です。アンドロイドでは、すべてのアプリケーションに独自のVMインスタンスがあり、特定の固定サイズの独自のヒープメモリ(他のアプリケーションと共有されていない)があります。アプリケーションに割り当てられるヒープメモリのサイズは、製造元によって設定されるため、モバイルによって異なります。デバイスによっては、16MBから64MBの間の任意の場所です。 android:largeHeap = "true"をマニフェストファイル属性に含めることで、特定のアプリケーションのヒープサイズを2倍にすることができます(これはお勧めしません)。だから私はと仮定します 'Adobe Air'アプリはそれを行います。

あなたがアプリケーションを閉じると、アンドロイドは実際にそれを殺しません。アプリはバックグラウンドで実行されるので、次回開いたときにすぐに読み込むことができます。したがって、デバイスのRAMの一部だけがすべてのアプリケーションに割り当てられ、したがってすべてのアプリケーションにハードリミットが割り当てられます。

しかし、iOSについての手掛かりはありません。

0

私は、時にはiPadの256MBのRAMを使いすぎて、OSによって停止するCOSをベースにしたiOSゲームを持っています。したがって、iOSの制限は基本的にOS +アプリ(推定160MB)です。私はそれを実行すると他のアプリを停止することを言及しなければならないので、バックグラウンドで実行されているものは他にありません。

関連する問題