6

我正在编写一个包含分代垃圾收集器的程序。只有两代人。我想知道的是:在进行完整收集时,我是否会通过首先收集较年轻的对象,将幸存者提升到老年代,然后收集老年代来获得任何收益(性能方面),还是应该只是垃圾收集所有一扫?我不确定人们通常会采用哪种方式。

我现在使用的是两步法,因为它实现起来有点简单,但也许一步法会更有效?

垃圾收集器是非复制的,如果这很重要的话。

4

1 回答 1

5

这取决于您提升幸存者的频率。如果你经常提升它们,那么看起来你会通过一次扫描做 GC 做得更好。如果你不这样做,那么看起来它们会非常相似。

无论哪种方式,您似乎都分两个阶段进行了一些多余的工作。例如,任何升职的人天生都会受到两次检查(一次是年轻,一次是年老)。同样,如果这种情况不经常发生,我会坚持使用更简单的两步法(因为您已经可以使用它并且几乎没有什么收获)。

于 2008-10-20T19:19:58.903 回答