出于好奇,我刚刚使用 Eclipse Memory Analyzer测试了我的Android应用程序内存泄漏。
我遇到了一个奇怪的位图,其大小为 512 x 512像素,耗尽了大约1兆字节的设备堆内存。
我检查了我的drawables文件夹,但找不到那个大小的位图(512 x 512)。
我开始使用谷歌搜索并遇到了这个问题,用户解释了如何在Memory Analyzer中的“内存泄漏”参考后面获取实际的Image:
MAT (Eclipse Memory Analyzer) - how to view bitmaps from memory dump
我按照教程并在GIMP的帮助下,提取了以下图片:
所以我的问题是:
注意:
更新:
在Selvin's建议的帮助下,以及我的个人感觉,这可能是一个系统问题,我测试了我的另外两个应用程序。
我测试的两个应用程序在Memory Analyzer中也显示了相同的Bitmap,消耗的字节数完全相同:
此外,我能够找到:
Bitmap的来源始终与应用的LAUNCHER活动相关联。
那该怎么办? 有没有办法摆脱它?
由于我在我的应用程序中执行内存密集型操作,因此我希望尽可能多地使用堆。
答案 0 :(得分:17)
Android使用的默认窗口背景是512x512图像(您使用黑色主题看到的蓝黑色渐变或带有浅色主题的灰白渐变)。在功能强大的设备上,此图像将替换为Android 4.2中的程序渐变。
请注意,此位图通常在Zygote中加载并由所有应用共享。如果转储不排除Zygote分配的对象,它可能会显示在堆转储中。
如果您有兴趣,以下是我正在讨论的两个512x512背景: