校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > 垃圾回收算法
题目

对象死亡(被回收)前的最后一次挣扎(百度面试题)

解答

通过可达性分析,那些不可达的对象并不是立即被销毁,他们还有被拯救的机会。

如果要回收一个不可达的对象,要经历两次标记过程。
首先是第一次标记,并判断对象是否覆写了 finalize 方法,如果没有覆写,则直接进行第二次标记并被回收。
如果对象在finalize()方法中重新与引用链建立了关联关系,那么将会逃离本次回收,继续存活。

方法区如何判断是否需要回收
方法区主要回收的内容有:废弃常量无用的类。对于废弃常量也可通过引用的可达性来判断,但是对于无用的类则需要同时满足下面3个条件:
① 该类所有的实例都已经被回收,也就是Java堆中不存在该类的任何实例;
② 加载该类的ClassLoader已经被回收;
③ 该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。

C 0条回复 评论

帖子还没人回复快来抢沙发