我正在编写一个包含分代垃圾收集器的程序。只有两代人。我想知道的是:当做一个完整的收集时,我是不是可以通过首先收集年轻的对象,将幸存者提升到老一代,然后收集老一代,或者我应该在一次扫描中对所有东西进行垃圾收集来获得什么(性能方面的)?我不确定人们通常用哪种方式来做。
我现在使用两步法,因为它更容易实现,但也许一步法会更有效率?
垃圾收集器是非复制的,如果这很重要的话。
发布于 2008-10-20 19:19:59
这取决于你提拔幸存者的频率。如果你经常推广它们,那么看起来你一下子做GC会做得更好。如果你不这样做,那么它们看起来会很相似。
无论哪种方式,看起来你似乎通过分两个阶段来做一些多余的工作。例如,任何被提拔的人都会被固有地检查两次(一次是年轻的,另一次是老的)。同样,如果这种情况不经常发生,我会坚持使用更简单的两步法(因为您已经让它工作了,而且没有什么好处)。
https://stackoverflow.com/questions/219540
复制相似问题