首页 > 试题广场 >

在Java中,对象什么时候可以被垃圾回收?

[问答题]
在Java中,对象什么时候可以被垃圾回收?
当没有任何对象的引用指向该对象时+在下次垃圾回收周期来到时=>对象才会被回收
发表于 2017-06-29 16:29:29 回复(3)
判断对象是否存活,可以使用引用计数器或者可达性分析两种方法。
引用计数器:
当引用计数器为零的时候,表明没用引用再指向该对象,但是引用计数器不能解决循环引用的情况;
可达性分析:
1. 当不能从GC Root寻找一条路径到达该对象时, 将进行第一次标记。
2. 第一次标记后检查对象是否重写了finalize() 和是否已经被调用了finalize()方法。若没有重写finalize()方法或已经被调用,则进行回收。
3. 在已经重写finalize()方法且未调用的情况下,将对象加入一个F-Queue 的队列中,稍后进行第二次检查。
4.在第二次标记之前,对象如果执行finalize()方法并完成自救,对象则不会被回收。否则完成第二次标记,进行回收。值得注意的是finalize()方法并不可靠。
编辑于 2019-07-19 15:55:01 回复(0)
当没有任何对象的引用指向对象时在一个不可预期的时间内对象才会被回收
发表于 2016-01-10 10:13:00 回复(2)
从GC Root对象开始搜索,搜索不到对象,并进行第一次标记、清理后,仍然没有复活的对象,那么这个对象可以被回收。
编辑于 2017-01-09 16:06:14 回复(0)
对象引用计数器为0 , GC Root没有可达路径,对象已经重写过finalize()方法或者重写该方法时没有赋予引用(简称“二次标记”),该对象被GC。

finalize()方法一个对象只能执行一次。
发表于 2018-09-12 16:02:25 回复(2)
当对象不在存活的时候,垃圾回收器可以将其回收。判断对象是否存活,可以用计数器或者可达性分析两种方法。当计数器为零的时候,表明没用引用再指向该对象,但是计数器不能解决循环引用的情况;可达性分析,当不能从GC Root寻找一条路径到达该对象时,表明该对象可以被回收。
发表于 2017-03-27 16:08:22 回复(0)
当对象的状态为不可达时,可以被回收
发表于 2016-03-17 21:34:26 回复(0)
当这个对象的引用为空时,该对象就会被回收。
发表于 2015-11-16 23:23:57 回复(0)
当对象对当前使用这个对象的应用程序变得不可触及的时候,这个对象就可以被回收了。
发表于 2015-10-29 12:10:42 回复(0)
当一个对象到GC Roots不可达时,在下一个垃圾回收周期中尝试回收该对象,如果该对象重写了finalize()方法,并在这个方法中成功自救(将自身赋予某个引用),那么这个对象不会被回收。但如果这个对象没有重写finalize()方法或者已经执行过这个方法,也自救失败,该对象将会被回收。
发表于 2016-10-19 09:06:00 回复(6)
引用递减法和不可达法
发表于 2020-09-20 16:46:42 回复(0)
判断对象存活的两种判断:
    1.引用计数器
当引用计数器为零的时候,表明没用引用再指向该对象,但是引用计数器不能解决循环引用的情况;
     2.可达性分析
1.当通过GC roots找不到该对象的路径时,进行第一次标记。
2. 第一次标记后检查对象是否重写了finalize() 和是否之前就已经调用了finalize()方法。若没有重写finalize()方法或之前已经被调用过,则进行回收。
 3. 在已经重写finalize()方法且未调用的情况下,将对象加入一个F-Queue 的队列中,稍后进行第二次检查。
4.在第二次标记之前,对象如果执行finalize()方法并完成自救,对象则不会被回收。否则完成第二次标记,进行回收。值得注意的是finalize()方法并不可靠。
发表于 2020-09-03 16:57:41 回复(0)
当没有任何对象的引用指向该对象时+在下次垃圾回收周期来到时=>对象才会被回收
发表于 2020-07-04 10:38:23 回复(0)

<p>内存空间不足的时候</p>当对象的引用不存在时

编辑于 2020-05-21 21:53:05 回复(0)

当该对象没有被任何其他对象引用时,并且下一个垃圾回收周期到来时。

发表于 2020-03-07 20:55:47 回复(0)

当没有任何对象的引用指向该对象时,下一次垃圾回收周期来临之后,该对象就会被回收

发表于 2019-09-19 10:36:26 回复(0)
当对象不在被引用的时候,没有创建的时候就会被回收
发表于 2019-09-04 15:56:32 回复(0)
当对象对当前使用这个对象的应用程序变得不可触及的时候,这个对象就可以被回收了。
发表于 2019-04-30 22:44:26 回复(0)
当对象对当前使用这个对象的应用程序变得不可触及的时候,这个对象就可以被回收了
发表于 2019-04-30 22:23:59 回复(0)
当对象对当前使用这个对象的应用程序变得不可触及的时候,这个对象就可以被回收了。
发表于 2019-04-27 21:08:19 回复(0)