745 B
745 B
两次标记过程
- 可达性分析发现没有GC Roots相连接的引用链,第一次标记
- 筛选该对象是否有必要执行finalize()方法,没有覆盖finalize()方法或该方法已经被虚拟机调用过,就是为没有必要执行 判定为有必要执行finalize()方法之后,会将该对象放在F-Queue队列中,稍后有一条虚拟机自动建立的,低调度优先级的Finalizer线程执行finalize()方法,但是并不承诺会等待运行结束,避免该方法执行缓慢而阻塞队列 finalize()方法是对象逃脱死亡命运的最后一次机会,稍后收集器对F-Queue中对对象进行第二次标记,对象想要拯救自己就需要与引用链上的任何一个对象重新建立关联