我花了最近几天试图去除我游戏中的内存泄漏,导致许多内存不足错误。我即将添加大量的图形,虽然不是非常复杂,但会显着增加我系统的处理需求,而且我有点担心我的内存使用情况,并且我希望有人可能拥有给我一些提示。我不想低于Android 2.1,所以请为此定制任何答案。考虑到内存有限,我该如何优雅地降低我的表现?
首先,我的游戏包括:
- 2个活动,13个XML文件(有些涉及到布局,一些对话的一小部分,和2个直接相关的活动
- 一在Adobe Illustrator中制作并转换为PNG的绘图数量可能很大,但并不特别大,在大多数情况下,在任何给定的时间内,只有少量的内存在内存中。
- 相当多的对话框。
- 针对Android 1.6及以上版本
- 我使用了最新的Admob,因此我必须针对3.2构建。
- 我的模拟器默认堆大小约为24 MB。
从我的游戏范例图片:
我学到的东西:
- 尽管我的总应用程序大小只有大约500K,我以某种方式占用了24 Megs,按
adb shell procrank
计算。 - 我做了相当多的优化,但没有看到内存的大幅增加。
- 使用工具来查找堆中的内容通常只显示大约7 MB的可用空间,使用大约3 MB。有时,在打开新的对话框之类的时候,我看到了一个增加,但我不能说我看到它全是那么大......
- MAT表明我的任何类都没有使用异常大的内存。
因此,考虑到所有这些,我的问题。
- 是24 Mb的发展到(1.6 + Android)的实际要求?
- 假设它是这样的,我怎么能够为可以处理它的系统提供更好的图形,但是不会为较老的系统崩溃和烧毁?
- 什么是我可以用来改善我的记忆使用率的一些常见陷阱?
LruCache也支持库http://developer.android.com/reference/android/support/v4/util/LruCache.html – dangVarmit 2013-10-23 22:38:32