对象引用什么时候会收集垃圾?

时间:2012-01-09 15:06:54

标签: java garbage-collection

有人告诉我,只有当引用设置为null时,垃圾收集器才会收集它。但是我认为垃圾收集器将收集所有未被设置为null的范围引用。

任何人都可以告诉我什么时候垃圾收集者会提出申请?

3 个答案:

答案 0 :(得分:9)

GC收集对象,而不是引用。

GC将在没有更多实时引用后的某个时间收集对象。 (GC是非确定性的)

答案 1 :(得分:2)

某人可能意味着你可以让GC在超出范围之前收集一个对象,方法是将保存对该对象的引用的变量设置为null。对于一些非常罕见的情况(例如,在不引用对象的长时间运行循环之前),此技术在过去一直很有价值。如今的编译器技术使这个想法几乎无用,因为编译器足够聪明,可以检测这些条件,并采取相应的行动。

答案 2 :(得分:0)

GC将“在需要时”从内存中删除对象。您可以尝试运行System.gc(),但它只是GC应该运行的提示。当GC运行时,它会找到未引用的对象(或仅具有弱引用的对象)。 GC在内存空间上运行频率降低。它最常在伊甸园空间中运行。默认情况下,GC在eden空间中运行时会运行,但您可以调整JVM。

为什么你首先要打扰GC?你的问题是什么?