android - 完成 Activity 后内存泄漏

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

我认为我的应用程序中的一些 Activity 正在泄漏内存。我试过以下: Activity A 是 launcher-activiy,占用 ~23,5MB 总内存(dalvik+native)。 当我从 A 开始 Activity B 时,我的应用程序需要大约 4 MB (~27,5MB)。如果我从 A 开始 Activity C,我的应用程序也需要大约 4 MB (~27,5MB)。因此,如果我开始这两个 Activity ,将占用大约 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 步之后不会释放任何内存。

最佳答案

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

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。

关于android - 完成 Activity 后内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18244047/

相关文章:

java - 为什么我的 Android 应用程序中的计算(Eclipse)出现错误?

c++ - 理解 memcpy

Python打印环境变量内存地址

Python将音频流PCM字符串高效转换为数组,重复使用

memory-management - 基于堆栈的内存分配

linux - 了解嵌入式平台设计

android - 在 android 中播放下一个或上一个视频

android - android资源id应该用于非布局代码吗?

python - 异常抛出 : read access violation. **bp** 是 0xFFFFFFFFFFFFFFFF

android - 在多行 TextView 的最后一个单词之后放置一个 View