垃圾回收的问题!

Object类中一个 protected void finalize()方法。用于垃圾回收。

Object类的子类因为继承了Object,都具备该方法,
那么当创建的对象不在被引用时,都会不确定的时间内,
被垃圾回收器调用它的finalize方法进行回收。

问题是:如果创建Object类对象
Object obj = new Object();
obj = null;

这个obj是不可以调用finalize方法的,因为是protected的,那这个对象是怎么被回收的呢?
初学者,望细解!

2011年06月01日 11:21 "@antyro"的内容
那这个对象是怎么被回收的呢 ...

JVM自动回收的,查看相关JVM垃圾回收机制

"这个obj是不可以调用finalize方法的,因为是protected的"

1、这句话毫无逻辑啊,他是protected了,为什么obj就不能调用了?
2、调用finalize是jvm在做垃圾回收前做的事,它跟垃圾回收没有直接关系,就算不调用这个方法JVM该收还是要收的(地主啊)
3、最好,调用finalize并不是obj这个引用去调用,而是事实上的obj创建的时候所指向的那块内存区域。


finalize里是用来写关闭流、TCP连接等JVM无法控制的一些资源操作的。