2012-01-04 52 views
1

这只是为了阐明我对java垃圾收集复制收集器的理解。需要澄清java垃圾收集复制收集器

是不是相同的逻辑=>

我感动的葡萄一束从一个盒子到其他的,哪些是不一串葡萄都在盒子有资格进行垃圾回收离开了那里。

有些人可能会发现我的理解很愚蠢,因为我想在此澄清的一点是,检查参考时所消耗的时间。

回答

2

葡萄的例子很好。

当GC工作效率最高时,它假定只有一小部分数据需要复制到下一个空间。如果您保留大部分数据,空间(伊甸园或幸存者)可能不够大,或者您的数据中等寿命过长。 (其中GC不能很好地处理)

0

是,

Java使用“标记和清除算法”作出符合垃圾收集对象

这与您的葡萄例子类似。 JVM将所有不再被引用的对象标记为值'1',之后所有不符合条件的对象保持值'0'。算法运行时,它将扫描所有值为“1”的对象。

+1

当您使用“-XX:+ UseConcMarkSweepGC”启用它时,它会使用标记和扫描,但仅适用于终身空间。 – 2012-01-04 08:12:46