据我所知,从规范(和标准的非机器人)java,如果一个对象只是“弱引用”,也就是说,只能通过弱引用来访问 - 它将是下次运行时由垃圾收集器收集。
在我的Android应用程序中,出于某种原因,情况并非如此。
一个非常繁重的对象(Activity)每次创建时都会保留在堆中,但是当我执行堆转储并在Eclipse Memory Analyzer中检查它时,我看到对象仍然在堆中,即使它是只有弱引用(在GC根选项的合并路径中可以看到)
当我明确清除弱引用时,对象被清除。
我在Android 2.3.3上运行我的应用程序。它看起来像某种平台错误。
我错过了什么吗? 还有其他人遇到过这个问题吗?
谢谢, 约阿夫
答案 0 :(得分:0)
将在下次运行时由垃圾收集器收集。
不,没有这样的保证。它可以收集。 (这适用于所有对象,无论引用类型如何,这就是您经常读取对象变为“符合条件进行收集”的原因。)