如何确定垃圾对象
在标记阶段,最重要的工作是区分垃圾对象。
为了区分垃圾,首先要确定所谓Root set。
Root set是内存对象的集合,在程序的当前上下文环境中,这些对象肯定可以访问。
很明显,属于Root set的对象如果引用了其他的对象,那么那些被引用的对象也不是垃圾对象。
标记的思路就是从Root set出发,遍历所有Root set能访问到的对象,对他们进行标记,表明这些对象不是垃圾对象,这是一个递归的搜索过程。
当整个遍历结束之后,那些没有被标记的对象就是垃圾对象。