完成活动后内存泄漏

时间:2013-08-14 23:30:43

标签: android memory memory-management memory-leaks android-activity

我认为我的应用程序中的一些活动是泄漏内存。我试过以下: 活动A是启动器活动,总内存大约为23,5MB(dalvik + native)。 当我从A开始活动B我的应用程序需要大约4 MB(~27,5MB)。如果我从A开始活动C我的应用程序也需要大约4 MB(~27,5MB)。因此,如果我开始两个活动大约需要7 MB(~30,5MB)。 现在我正在做以下事情: A->从A->开始B;从B-开始C>完成B.额外采用的预期内存量约为4MB(~27,5MB),但我的应用实际上消耗了7个MB(~30,5MB)。为什么会这样?

thx&问候

PS:我正在使用Little Eye来分析我的应用程序的内存使用情况。所有数据都代表总内存值(dalvik + native)。 如果我只做A->从A->开始B>完成B在步骤3之后没有释放内存。

1 个答案:

答案 0 :(得分:2)

您不能强制垃圾收集器以任何方式收集内存。 finish()只是告诉系统活动已经完成,结果可以传播回来。

http://developer.android.com/reference/android/app/Activity.html#finish%28%29

尝试使用System.gc()强制使用垃圾收集器,但是,这并不能保证即使没有对象的生存引用也会对内存进行垃圾收集。 试试看这里:

http://android-developers.blogspot.co.uk/2009/01/avoiding-memory-leaks.html

此外,垃圾收集环境中的内存泄漏意味着无法对对象进行垃圾回收,因为挂起的引用仍然指向它。如果这可能是你的情况尝试使用Eclipse插件MAT。