这只是为了澄清我对java垃圾收集复制收集器的理解。
与=>
的逻辑是否相同我正在将一串葡萄从一个盒子移到另一个盒子里,所有不在一堆的葡萄都留在盒子里,有资格进行垃圾收集。
有些人可能会觉得我的理解很愚蠢,因为我想在此澄清一点,就是检查参考所花费的时间。
答案 0 :(得分:2)
葡萄的例子很好。
当GC工作效率最高时,它假设只需要将一小部分数据复制到下一个空间。如果要保留大部分数据,则空间(eden或幸存者)可能不够大,或者您有太多中等数据。 (GC没有特别好处理)
答案 1 :(得分:0)
是的,
Java使用'标记和扫描算法'来使对象符合垃圾回收的条件。
这与你的葡萄例子类似。 JVM标记所有不再使用值“1”引用的对象,之后所有不符合条件的对象保留值“0”。算法运行时,扫描所有值为“1”的对象。