google 无果,求指教个问题
读 《深入浅出 nodeJs》 里面GC这一节遇到的问题,
里面提到新生代 Scavenge 算法是典型的牺牲空间换取时间的算法,会“会检查From空间中的存活对象,这些存活对象将被复制到To空间”
并且说了老生代中 使用标记清除和标记整理
我的问题是
新生代 Scavenge 算法是怎么判断堆内存中对象是否存活的?
如果可以直接从堆内存中判断对象“存活”, 那为什么还需要标记算法进行两次扫描(我理解的是第一次从根节点扫描标记,第二次暂停并从堆内存线性扫描清除未被标记的并释放)