1

我认为我的应用程序中的一些活动正在泄漏内存。我尝试了以下操作:活动 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)。为什么会这样?

谢谢和问候

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

4

1 回答 1

3

您不能强制垃圾收集器以任何方式收集内存。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。

于 2013-08-14T23:42:13.350 回答