0

据我所知,从规范(以及标准的非android)java中,如果一个对象只是“弱引用”,即只能通过弱引用访问 - 它将下次运行时被垃圾收集器收集.

在我的 android 应用程序中,出于某种原因,情况并非如此。

一个相当重的对象(Activity)每次创建时都留在堆中,但是当我执行堆转储并在 Eclipse 内存分析器中检查它时,我看到该对象仍然在堆中,即使它只是弱引用(因为可以在合并路径到 GC 根选项中可以看到)

当我明确清除弱引用时,对象被清除。

我在 Android 2.3.3 上运行我的应用程序。它看起来像是某种平台错误。

我错过了什么吗?有没有其他人遇到过这个问题?

谢谢,约阿夫

4

1 回答 1

0

它将在下次运行被垃圾收集器收集。

不,没有这样的保证。它可以被收集。(这适用于所有对象,无论引用类型如何,这就是为什么您经常读到一个对象变得“符合收集条件”的原因。)

于 2012-07-25T07:04:02.227 回答