Skip to content

复制算法

1. 算法逻辑

复制算法的核心思想是:

  1. 准备两块空间From空间和To空间,每次在对象分配阶段,只能使用其中一块空间(From空间)。
  2. 在垃圾回收GC阶段,将From中存活对象复制到To空间。
  3. 将两块空间的From和To名字互换。

垃圾回收前:
Alt text 垃圾回收后:
Alt text

2. 复制算法的优缺点

2.1 优缺点

  1. 吞吐量高 复制算法只需要遍历一次存活对象复制到To空间即可,比标记-整理算法少了一次遍历的过程,因而性能较好,但是不如标记-清除算法,因为标记清除算法不需要进行对象的移动
  2. 不会发生碎片化
    复制算法在复制之后就会将对象按顺序放入To空间中,所以对象以外的区域都是可用空间,不存在碎片化内存空间。

2.2 缺点

内存使用效率低
每次只能让一半的内存空间来为创建对象使用。