相关疑难解决方法(0)

找到并修复大堆大小的原因

我想弄清楚为什么我的应用程序使用了这么多内存.我经常看到它使用15到18MB之间,这远远高于我的预期.我通过DDMS查看了堆大小,看到了这个:

在此输入图像描述

这看起来有点可疑,因为我的应用程序根本不处理大图像.事实上,我的应用程序中drawables的总和大约是250KB.所以我创建了一个堆转储并使用MAT来找到所有这些内存的去向.byte []数组是迄今为止最大的消费者,所以我深入研究并注意到以下内容:

在此输入图像描述

我完全不知道为什么sPreloadedDrawables负责这么高的保留堆大小.我也不知道如何确定根本原因,或者如何"修复"它.

我应该从哪里出发?我的应用程序主要通过不处理图像数据的服务在后台运行.我确实有用户可以选择使用的活动,但同样,他们使用的小型drawable不能解释如此大的堆大小.我还检查了任何令人讨厌的活动泄漏事件等,但没有找到任何.

编辑:我注意到在模拟器中运行时堆大小要大得多.这很令人困惑.:/

android memory-management ddms

53
推荐指数
1
解决办法
7724
查看次数

标签 统计

android ×1

ddms ×1

memory-management ×1