有人告诉我,只有当引用被设置为空时,垃圾回收器才会收集它。然而,我认为垃圾回收器将收集所有范围外的引用,这些引用从未被设置为空。
谁能告诉我垃圾收集器什么时候会声明引用?
发布于 2012-01-09 23:07:37
GC收集对象,而不是引用。
GC将在对象不再有活动引用后一段时间收集该对象。( GC是不确定的)
发布于 2012-01-09 23:09:51
有人可能的意思是,通过将保存对对象的引用的变量设置为null,可以让GC在对象超出范围之前收集该对象。在过去,这种技术在一些非常罕见的情况下很有价值(例如,在没有引用对象的长时间运行的循环之前)。如今的编译器技术使得这个想法几乎毫无用处,因为编译器足够聪明,可以检测到这些条件,并采取相应的行动。
发布于 2012-01-09 23:16:54
GC会“在需要的时候”从内存中删除对象。您可以尝试运行System.gc(),但它只是对GC的一个提示,它应该运行。当GC运行时,它会找到未引用的对象(或仅具有弱引用的对象等)。GC的运行频率取决于内存空间。它最常在伊甸园运行。默认情况下,GC在eden空间中满时运行,但您可以调优JVM。
为什么你一开始还要纠结于GC呢?你有什么问题?
https://stackoverflow.com/questions/8790478
复制相似问题