AdMob SDKが使用しているように見えるメモリの量と、このメモリが実際にどこにあるかについて混乱しています。説明させてください。
私のアプリには、無料と有料の 2 つの種類があります。無料版には AdMob 広告がありますが、それ以外のコードはほぼ同じです (一般的な Android ライブラリを使用)。
Nexus 4 (Android 4.2.1) でアプリを実行し、メモリ使用量を比較しました。デバイス設定 > アプリ > 実行中のアプリで使用されているシステム メモリを確認します。また、GC logcat メッセージで報告された Dalvik ヒープ メモリと、HPROF ファイルの使用も調べます。
有料版を実行すると、次のことがわかります。
- システムメモリ:約16MB
- Dalvikヒープサイズ:約10MB
無料版を実行すると、次のように表示されます。
- システムメモリ:約29MB
- Dalvikヒープサイズ:約11MB
つまり、dalvik ヒープ サイズは両方のバージョンで似ています。しかし、実際に使用されるシステム メモリは10MB 以上です。
メモリ プロファイリング ( http://www.youtube.com/watch?feature=player_embedded&v=_CruQY55HOk ) について学習し、HPROF ファイルを何時間もかけてリークの可能性を排除した結果、結論は 1 つしかわかりません。
AdMob によって使用される 10 MB の余分なシステム メモリは、実際にはネイティブ メモリであり、dalvik ヒープの外部で malloc を使用して割り当てられます。
今、私は2つのことについて疑問に思っています:
- 無料版のシステム メモリは有料版よりも 10 MB 大きいため、メモリ不足の場合に OS によって強制終了される可能性がはるかに高いと思います。または、Android OS は、どのアプリを強制終了するかを決定するために Dalvik ヒープのみを考慮に入れますか?
- AdMob SDK を調整して割り当て可能なメモリ量を選択する方法はありますか?
どうもありがとう