如果我有一个扫描仪对象并使用close()方法,那么在该行之后垃圾收集器会变得难以理解吗? 或者,如果我写“scanner = null;”,它只会变得难以理解吗?
如果我没有在我的程序的任何部分中将对象设置为null(扫描仪或不是扫描仪),我可以说它会在程序结束时变为垃圾收集器吗?或者垃圾收集器是否真的难以理解?
答案 0 :(得分:2)
close()
调用close()
方法的实现只是它与GC无关,只有在没有实时引用的情况下,对象才有资格进行收集
答案 1 :(得分:0)
如果在方法内部使用局部变量作为scanner对象,并且不将此变量分配给范围更广的任何其他对象,则当您退出包含此局部变量的方法时,该对象有资格进行垃圾收集。
答案 2 :(得分:0)
许多人说调用close()
不会使对象符合GC的条件。顺便说一下,它可能会关闭或取消引用某些内部对象,因此它们将符合GC的条件。顺便说一句,当处理IO调用close()
时,释放一些操作系统句柄(以及昂贵的资源),这通常比GC对单个对象更重要。
答案 3 :(得分:-2)
一个对象有资格进行垃圾收集,如果无法从任何活动线程或任何静态引用访问它,换句话说,如果一个对象的所有引用都为空,则可以说该对象有资格进行垃圾收集。