SDK >= 8 用にビルドされた Android でゲーム アプリケーションを開発しています。常に Android 2.2 フォンでテストしましたが、問題はありませんでした。ICS が搭載された Nexus 電話に移行したとき、ヒープ メモリの割り当てに問題が発生し始めました。空のアクティビティを開始してそれ以上何もしないことにするまで、アプリ内のすべてを削除して、メモリ リークの問題や奇妙な割り当て (Eclipse で DDMS と MAT の両方を使用) が発生している場所を確認しようとしました。
Android 2.2 では起動時のヒープ サイズは約 2.0MB ですが、Android 4.1 では約 11MB です。なぜこれほど大きな違いがあるのでしょうか。
さらに、ICS でヒープ サイズのアプリを再生すると、ガベージ コレクターがすぐにメモリの解放を開始し、アプリケーション全体が遅くなり、FPS が非常に低くなります。Android 2.2 では、すべてが非常にスムーズでクリーンで、問題は 1 つもありません。
これら2つのシステムの違いはどこにあるのでしょうか。アプリの実装については話したくありません (コードの最適化、メモリの割り当てと保持、その他すべてに既に 2 週間を費やしました。それ以上のことはできません)。 . また、ICS は、ビットマップとドローアブルをロードして保持するために、より多くのメモリを必要とするようです。