1.如果一个对象没有与其相连的GC ROOT,一定会被回收吗?
这个对象并非是非死不可的,这时他只是处于死缓阶段,要真正宣告一个对象的死亡,至少要经历两次标记过程:如果对象在进行可达性分析后发现并没有与GCROOT想连接,那它会被第一次标记并且进行一次筛选,筛选的条件是此对象是否有必要执行finalize{}方法。当对象没有覆盖finalize()方法,或者finalize()方法已经被虚拟机调用过,虚拟机将这两种情况都视为没有必要执行。
1.如果一个对象没有与其相连的GC ROOT,一定会被回收吗?
这个对象并非是非死不可的,这时他只是处于死缓阶段,要真正宣告一个对象的死亡,至少要经历两次标记过程:如果对象在进行可达性分析后发现并没有与GCROOT想连接,那它会被第一次标记并且进行一次筛选,筛选的条件是此对象是否有必要执行finalize{}方法。当对象没有覆盖finalize()方法,或者finalize()方法已经被虚拟机调用过,虚拟机将这两种情况都视为没有必要执行。