android - 未释放的 Activity 内存

标签 android memory-leaks memory-management

我有一个有一些前台 Activity 的应用程序,还有一个更新一些小部件的服务。 问题在于,由于该进程保留用于服务,因此其他 Activity 的内存(如果它们被打开)永远不会被回收。

查看that response from Roman Guy似乎可以正常。但它是? android 保留未使用 Activity 的资源多长时间?他们能活几个小时?

我如何轻松知道 Activity 是否泄露或未被回收?我已经尝试使用来自 AndroidMarket (FreeMemoryRecover) 的程序并且它已被清除,但我怀疑它会终止进程然后重新启动服务...

我们将不胜感激任何帮助或建议。

注意 1:我已经使用 HeapDump + Eclipse MAT 进行了调查,但没有看到奇怪的引用来控制我的 Activity

注2:关于这个问题我已经问过一些问题了:

最佳答案

Android 在不同状态下拥有多个 Activity 的能力是一项设计原则,因为它允许用户在 Activity 之间快速切换,而不必有意识地关闭他们之前正在做的任何事情。然后他们可以快速返回到之前的 Activity 。

如果 Android 需要暂停 Activity 并快速取消暂停,它需要保持 Activity 的资源对其可用。

如果内存是已终止 Activity 的一部分,那么它就会泄漏(不太可能,因为 Linux 内核会回收进程终止时使用的所有内存),否则它要么正在被主动使用,要么可能即将被使用。

这段内存让你担心什么?

关于android - 未释放的 Activity 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4836206/

相关文章:

android - 重复警报不起作用

javascript - Phonegap/Cordova-从临时目录中以文本形式读取文件

c++ - 将指针放入 std::vector & 内存泄漏

python - Python2.4 上的 Valgrind : Huge amount of memory 'possibly lost'

Ruby 内存使用变得疯狂

java - 监控应用程序以监控 Java 桌面应用程序的性能

带有 CheckBox : setOnClickListener or setOnCheckedChangeListener 的 Android 自定义适配器

javascript - 第一次 TouchableOpacity 推送时从 FlatList 记录的数据为空

c - malloc 有时会失败。或者 pread 有时会失败

c++ - 串行端口线程的 CPU 消耗