我正在使用Eclipse Memory Analyzer Tool(MAT)调查我的Android活动是否存在内存泄漏。如果这个活动有一个泄漏,我希望死实例会挂在堆上,没有被垃圾回收。为了检查这一点,我反复启动和停止(通过按下Back按钮)活动,然后使用MAT检查堆转储。
但是我观察到一些奇怪的行为,我无法解释:第一个活动实例(在强制关闭之后启动)永远不会被垃圾回收。然而,随后的实例可以。我知道这个问题是通过MAT工具检查出来的:无论活动启动和停止多少次,MAT工具总是显示堆上的两个实例。第一个实例属于第一次启动活动时,而第二个实例则属于最近运行的活动。
任何想法可能发生的事情,以及我是否应该担心这个关于内存泄漏的问题?非常感谢您的建议。
但是我观察到一些奇怪的行为,我无法解释:第一个活动实例(在强制关闭之后启动)永远不会被垃圾回收。然而,随后的实例可以。我知道这个问题是通过MAT工具检查出来的:无论活动启动和停止多少次,MAT工具总是显示堆上的两个实例。第一个实例属于第一次启动活动时,而第二个实例则属于最近运行的活动。
任何想法可能发生的事情,以及我是否应该担心这个关于内存泄漏的问题?非常感谢您的建议。
MapActivity
实例保持了一个间接的静态引用。 - CommonsWare