使用close()方法时,对象是否符合垃圾收集器的条件?

时间:2014-05-14 02:49:02

标签: java garbage-collection

如果我有一个扫描仪对象并使用close()方法,那么在该行之后垃圾收集器会变得难以理解吗? 或者,如果我写“scanner = null;”,它只会变得难以理解吗?

如果我没有在我的程序的任何部分中将对象设置为null(扫描仪或不是扫描仪),我可以说它会在程序结束时变为垃圾收集器吗?或者垃圾收集器是否真的难以理解?

4 个答案:

答案 0 :(得分:2)

close()调用close()方法的实现只是它与GC无关,只有在没有实时引用的情况下,对象才有资格进行收集

答案 1 :(得分:0)

如果在方法内部使用局部变量作为scanner对象,并且不将此变量分配给范围更广的任何其他对象,则当您退出包含此局部变量的方法时,该对象有资格进行垃圾收集。

答案 2 :(得分:0)

许多人说调用close()不会使对象符合GC的条件。顺便说一下,它可能会关闭或取消引用某些内部对象,因此它们将符合GC的条件。顺便说一句,当处理IO调用close()时,释放一些操作系统句柄(以及昂贵的资源),这通常比GC对单个对象更重要。

答案 3 :(得分:-2)

一个对象有资格进行垃圾收集,如果无法从任何活动线程或任何静态引用访问它,换句话说,如果一个对象的所有引用都为空,则可以说该对象有资格进行垃圾收集。