我正在编写一个包含世代垃圾收集器的程序.只有两代人.我想知道的是:在进行全面收集时,我是通过先收集年轻的物体,将幸存者提升到老一代,然后收集老一代,或者我只是垃圾收集所有东西来获得任何东西(性能方面)一扫?我不确定人们通常采用哪种方式.
我现在正在使用两步法,因为它实现起来有点简单,但也许一步法更有效?
如果重要的话,垃圾收集器是非复制的.
这取决于你促进幸存者的频率.如果你经常推广它们,那么看起来你通过一次扫描做GC会做得更好.如果你不这样做,那么看起来它们会非常相似.
无论哪种方式,似乎你分两个阶段做了一些冗余的工作.例如,任何获得晋升的人都会被固有地检查两次(一次是年轻的,一次是旧的).同样,如果这种情况不经常发生,我会坚持使用更简单的两步法(因为你已经有了它,并且没有什么好处).