一般Android内存泄漏,特别是谷歌分析跟踪器

时间:2011-01-21 21:16:34

标签: android memory-management

我有几个简单的问题。它们都涉及一个主题,一个策略可以处理所有事情,所以我希望我把它们放在同一个主题下。

我在查找有关垃圾收集的可靠信息方面遇到了麻烦,所以如果有任何帮助,我会很感激,我想也许我并不完全理解我在MAT中读到的内容。即使你能回答1个问题,我也会非常高兴

  1. 在Android中查找内存泄漏的最佳策略是什么?最好的我可以告诉它是获取Eclipse MAT,选择一个没有收集垃圾的对象(使用支配树,或者最容易找到它的任何东西),并显示最短的合并路径到gc该对象,并找到对该对象的最远的传入引用,您可以控制并在destroy上删除该引用。这可以杀死引用,但有时对象仍然没有收集垃圾

  2. 在destroy上清空所有处理程序/ runnables / threads / listeners是不错的做法?如果我不这样做,其中一些似乎无限期地存在,有时即使我这样做。

  3. 确保线程被垃圾收集的最佳方法是什么,即使引用已被清空(它们似乎有时会留下来)?

  4. 为什么哦为什么我不能让谷歌分析跟踪器收集垃圾,即使它根本没有我的应用程序的参考。它似乎保留了对我的活动的参考,所以我认为这可能与我的GC问题有关。

  5. 谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 最好的策略是从一开始就充分了解您正在做的事情的含义,从而避免内存泄漏。例如,请参阅handling memory leaks in Java。否则,这似乎是一个很好的方法以及代码检查。您是否强制GC证明仍未收集对象?

  2. 一般来说,没有。 This article对原因有很好的解释。

  3. 不提及任何引用?遵循上述标准编码惯例。

  4. 不知道。但是你不会在整个申请过程中使用它,所以这并不重要吗?最终,Android会终止您的整个过程并回收内存。