Object类中一个 protected void finalize()方法。用于垃圾回收。
Object类的子类因为继承了Object,都具备该方法, 那么当创建的对象不在被引用时,都会不确定的时间内, 被垃圾回收器调用它的finalize方法进行回收。
问题是:如果创建Object类对象 Object obj = new Object(); obj = null;
这个obj是不可以调用finalize方法的,因为是protected的,那这个对象是怎么被回收的呢? 初学者,望细解!
Object类中一个 protected void finalize()方法。用于垃圾回收。
Object类的子类因为继承了Object,都具备该方法, 那么当创建的对象不在被引用时,都会不确定的时间内, 被垃圾回收器调用它的finalize方法进行回收。
问题是:如果创建Object类对象 Object obj = new Object(); obj = null;
这个obj是不可以调用finalize方法的,因为是protected的,那这个对象是怎么被回收的呢? 初学者,望细解!
JVM自动回收的,查看相关JVM垃圾回收机制
"这个obj是不可以调用finalize方法的,因为是protected的"
1、这句话毫无逻辑啊,他是protected了,为什么obj就不能调用了? 2、调用finalize是jvm在做垃圾回收前做的事,它跟垃圾回收没有直接关系,就算不调用这个方法JVM该收还是要收的(地主啊) 3、最好,调用finalize并不是obj这个引用去调用,而是事实上的obj创建的时候所指向的那块内存区域。
finalize里是用来写关闭流、TCP连接等JVM无法控制的一些资源操作的。