我正在为 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 下,一切都非常流畅和干净,没有任何问题。
有谁可以建议我这两个系统之间的区别在哪里?我不想谈论我的应用程序实现(我已经花了 2 周时间优化代码、内存分配和保留以及其他所有内容。不能做更多),但我想了解所有内存在应用程序启动时的去向. 此外,ICS 似乎需要更多内存来加载和保留位图和可绘制对象。