出于好奇,我最近使用Eclipse 内存分析器测试了我的 Android 应用程序的内存泄漏。
我遇到了一个奇怪的位图,大小为512 x 512 像素,使用了大约 1 兆字节的设备堆内存。
我检查了我的 drawables 文件夹,但找不到那个大小 (512 x 512) 的位图。
我开始搜索并遇到了这个问题,用户解释了如何在内存分析器中获取“内存泄漏”引用背后的实际图像:
MAT (Eclipse Memory Analyzer) - 如何从内存转储中查看位图
我按照教程并在 GIMP 的帮助下提取了以下图像:
所以我的问题是:
- 那是什么?
- 它在我的应用程序堆中做什么?
- 我该如何摆脱它?
- 其他人在他的堆中有相同的位图吗?
笔记:
- 在我的drawables文件夹中没有看起来像那样的位图
- 我的应用程序使用的最大位图是 140 x 140 像素
- 我有一种感觉,这个 Bitmap 不知何故来自系统
- 位图在应用程序启动后立即处于堆中 - 无需任何用户交互
- 我在 HTC One S 上调试,Android 4.1 Cyanogen Mod(屏幕 540 x 960)
- 我没有使用外部库
更新:
在Selvin 的建议和我个人认为这可能是系统问题的帮助下,我测试了我的另外两个应用程序。
我测试的两个应用程序也在内存分析器中显示了相同的位图,消耗的字节数完全相同:
此外,我能够发现:
Bitmap 的来源始终与应用程序的 LAUNCHER Activity 相关联。
那么该怎么办呢?有没有办法摆脱它?
由于我在我的应用程序中执行内存密集型操作,我希望有尽可能多的可用堆。