•标记扫描收集器首先跟踪访问标记所有可访问的对象,然后扫描堆来释放不可访问的对象。
•标记压缩收集器改进了标记和扫描;它们重新排列堆中的可访问对象来消除内存碎片。
•复制收集器会破坏跟踪和查找可用空间的依赖关系。他们将内存分成两个空间A和B。从空间A满足分配请求到它填满,那时垃圾收集器接管,将可访问对象复制到另一个空间B,并且反转空间之间的角色。
•增量收集器。简单跟踪收集器在收集垃圾时停止用户程序。增量收集器交织垃圾收集器和修改器或用户程序的动作。修改器可以干扰增量可访问性分析,因为它可以更改以前扫描对象中的引用。因此,增量收件人可以通过高估一组可访问到的对象来安全;任何“浮动垃圾”都可以在下一轮收集中获取。
•部分减少收集器。他们一次收集垃圾的一部分。最常见的部分收集算法,代数垃圾收集,根据分配时间分配对象,并且更经常地收集新创建的对象,因为它们往往有较短的生命周期。一种替代算法,列车算法使用被称为车辆的固定长度分区,被收集到列车中。每个收集步骤被应用到剩下的第一列火车。当收集车辆时,可访问的对象被移出到其他车辆,所以这辆车留下垃圾,可以从火车中取出。这两种算法可以一起使用来创建一个部分收集器,它将代数算法应用于较新的对象,并将训练算法应用于更成熟的对象。
网友评论