我使用了几个大的drawable,我不知道如何管理内存泄漏。 我跟踪了我的应用程序的堆大小,它不停止增长(作为分配的内存)。Android Drawables内存泄漏
它特别是长大而不会减少的“字节数组(byte [])”类型。 (在Eclipse上的DDMS Heap视图中)
我的应用程序由一个使用片段的活动组成。 这些片段正在显示几张大图片。 我试图将drawables回调设置为null,将drawables设置为null,当我弹出一个片段但堆不会减少时清除我的易失性缓存(这会阻止我的应用程序执行太多的磁盘IO操作)。实际上,每次我调用: Drawable.createFromResourceStream(context.getResources(),value,new FileInputStream(f),f.getName(),opts); 堆长大。我如何释放记忆?
谢谢!
我引用了应用程序上下文,而不是活动场景,你认为问题是,我的片段永远不会被销毁,他们泄露? – abecker
也许,请在我的答案中查看视频,了解如何使用SDK内存分析工具(MAT)查找正在泄漏的对象 –
嘿!我解决了我的问题!实际上,我的片段被保存在内存中,并且它是我的静态易失性缓存。我不知道为什么它有这种行为。我创建了一个DrawableManager,当我创建一个片段时,它有多种方法从磁盘或网络中检索Drawable。当它将一个视图传递给我的视图时,它将它保存在一个静态HashMap中(以便在我的其他片段中重用此缓存)。我只是让我的HashMap没有静态(不能重用片段之间的易失性缓存)。我不知道为什么我的碎片被留在记忆中。 – abecker