出于好奇,我最近使用Eclipse Memory Analyzer测试了我的Android应用的内存泄漏情况。
我发现一个奇怪的位图,大小为512 x 512像素,占用了大约1兆字节的设备堆内存。
我检查了我的drawable文件夹,但找不到这个尺寸(512 x 512)的位图。
我开始搜索并找到了这个问题,其中一个用户解释了如何在Memory Analyzer中获取“内存泄漏”引用后面的实际图像:
MAT (Eclipse Memory Analyzer) - how to view bitmaps from memory dump
我按照教程操作,并在GIMP的帮助下提取了以下图像:
所以我的问题是:
- 那是什么?
- 它为什么会在我的应用程序堆中?
- 我该如何除掉它?
- 其他人的堆中是否有相同的位图?
注:
- 我的drawable文件夹中没有看起来像那个的位图。
- 我应用程序使用的最大位图是140 x 140像素。
- 我有一种感觉,这个位图可能来自系统。
- 该位图在应用启动后立即出现在堆中 - 没有任何用户交互。
- 我在HTC One S上进行调试,Android 4.1 Cyanogen Mod(屏幕540 x 960)。
- 我没有使用外部库。
更新:
在Selvin的建议下,以及我个人认为这可能是系统问题的感受协助下,我测试了我的其他两个应用程序。
我测试的这两个应用程序在内存分析器中显示了相同数量的字节所占用的位图:
此外,我还发现:
该位图的来源始终与应用程序的LAUNCHER活动相关联。
那该怎么办呢?有什么方法可以摆脱它吗?
由于我的应用程序需要进行大量的内存操作,因此我希望尽可能多地使用堆。